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 常用校验函数
Mar 26 Javascript
js获取浏览器的可视区域尺寸的实现代码
Nov 30 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
Dec 12 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
May 27 Javascript
使用jquery操作session方法分享
Jan 22 Javascript
详解AngularJS Filter(过滤器)用法
Dec 28 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
Jun 02 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
详解Jest结合Vue-test-utils使用的初步实践
Jun 27 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
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP实现的二分查找算法实例分析
2017/12/19 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
简述Python中的面向对象编程的概念
2015/04/27 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python 切换root 执行命令的方法
2019/01/19 Python
pandas的qcut()方法详解
2019/07/06 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
工商技校毕业生自荐信
2013/11/15 职场文书
投资合作协议书范本
2014/04/17 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
超市收银员岗位职责
2015/04/07 职场文书
《检阅》教学反思
2016/02/22 职场文书