Angular 4.X开发实践中的踩坑小结


Posted in Javascript onJuly 04, 2017

本文主要给大家分享了关于Angular 4.X开发中与到的一些踩坑经验,分享出来供大家参考学习,下面来一起看看详细的介绍:

一、使用ngIf或者ngSwitch出错

在html文件中使用ngIf或者ngSwitch时,会解析出错,错误提示如下:

Error: Template parse errors:
Can't bind to 'ngSwitch' since it isn't a known property of 'div'.

这个是因为没有在此Component所在的Module中导入CommonModule,虽然你可能在AppModule中导入过了,但是还是需要导入一次,代码如下:

import { CommonModule } from '@angular/common';
@NgModule(
 {
  declarations: [ ],
  imports: [
   CommonModule
  ],
  exports: [ ],
  providers: [ ]
 }
)
export class MainModule { }

二、多级依赖注入器

Angular 4.X拥有多级依赖注入系统,在一个注入器的范围内,依赖都是单例的。它使用冒泡机制,当一个组件申请获得一个依赖时,Angular 先尝试用该组件自己的注入器来满足它。 如果该组件的注入器没有找到对应的提供商,它就把这个申请转给它父组件的注入器来处理。 如果那个注入器也无法满足这个申请,它就继续转给它的父组件的注入器。

举个例子,从登录页点击登录按钮进入主页,LoginComponent和MainComponent都注入了LoginService。

登录:

//login.service.ts
// 这个是登录服务
import { Injectable } from '@angular/core';

@Injectable()
export class LoginService {
 isLoggedIn: boolean = false;
 login(){
  this.isLoggedIn=true;
 }
}
// login.component.ts
//登录界面,只有一个登录按钮,点击后登录会把LoginService中的isLoggedIn变为true

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { LoginService } from '../login/login.service';
@Component({
 selector: 'app-login',
 template:`<button (click)=login()>Login</button>`,
 providers: [LoginService]
})
export class LoginComponent implements OnInit {

 constructor(private router: Router, private loginService: LoginService) { }

 login() {
 this.loginService.login();
 console.log(this.loginService.isLoggedIn); //结果为true
 this.router.navigate(['/main']);
 }
}
// main.component.ts
// 这个是登陆后的主界面

import { Component} from '@angular/core';
import { LoginService } from '../login/login.service';

@Component({
 selector: 'app-main',
 template: `<h1>HOME</h1>`,
 providers: [LoginService]
})
export class MainComponent implements OnInit {

 private userType: string ;
 constructor(private loginService: LoginService) {
 console.log(this.loginService.isLoginIn); //结果为false
 }
}

从上面的例子可以看出来,在不同的地方注入同样的Service,但是会使用不同的实例,所以会导致结果可能不同,需要注意。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JS加jquery简单实现标签元素的显示或隐藏
Sep 23 Javascript
Javascript浅谈之this
Dec 17 Javascript
js中判断对象是否为空的三种实现方法
Dec 23 Javascript
JavaScript实现可拖拽的拖动层Div实例
Aug 05 Javascript
jQuery对象的链式操作用法分析
May 10 Javascript
JS 全屏和退出全屏详解及实例代码
Nov 07 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
Vue渲染过程浅析
Mar 14 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
Apr 29 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
Sep 04 Javascript
layui table 表格模板按钮的实例代码
Sep 21 Javascript
微信小程序scroll-view不能左右滑动问题的解决方法
Jul 09 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 #jQuery
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 #jQuery
jQuery简介_动力节点Java学院整理
Jul 04 #jQuery
JS实现给json数组动态赋值的方法示例
Mar 19 #Javascript
JavaScript之Canvas_动力节点Java学院整理
Jul 04 #Javascript
jQuery查找和过滤_动力节点节点Java学院整理
Jul 04 #jQuery
jQuery动画_动力节点节点Java学院整理
Jul 04 #jQuery
You might like
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
JavaScript闭包详解
2015/02/02 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
Python中list初始化方法示例
2016/09/18 Python
深入理解Python3中的http.client模块
2017/03/29 Python
Python lambda表达式用法实例分析
2018/12/25 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
商务英语专业毕业生自荐信
2013/11/05 职场文书
绩效管理实施方案
2014/03/19 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技