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 设置选中行的样式的实现代码
May 24 Javascript
TypeScript具有的几个不同特质
Apr 07 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
jQuery实现自动滚动到页面顶端的方法
May 22 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
利用C/C++编写node.js原生模块的方法教程
Jul 07 Javascript
bootstrap多层模态框滚动条消失的问题
Jul 21 Javascript
Windows下Node.js安装及环境配置方法
Sep 18 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
Aug 29 Javascript
详解几十行代码实现一个vue的状态管理
Jan 28 Javascript
Vue-Cli项目优化操作的实现
Oct 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
一个很不错的PHP翻页类
2009/06/01 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
Yii实现简单分页的方法
2016/04/29 PHP
php生成HTML文件的类方法
2019/10/11 PHP
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
Python3爬虫全国地址信息
2019/01/05 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
python文字转语音实现过程解析
2019/11/12 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
金融专业个人的自我评价
2013/10/18 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
社区清明节活动总结
2014/07/04 职场文书
婚内房产协议书范本
2014/10/02 职场文书
实习班主任自我评价
2015/03/11 职场文书
自我推荐信格式模板
2015/03/24 职场文书
中标通知书范本
2015/04/17 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang