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 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
js中的window.open返回object的错误的解决方法
Aug 15 Javascript
javascript与webservice的通信实现代码
Dec 25 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
Apr 16 Javascript
表单验证插件Validation应用的实例讲解
Oct 10 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
Nov 06 Javascript
老司机带你解读jQuery插件开发流程
May 16 Javascript
浅析Javascript ES6中的原生Promise
Aug 25 Javascript
js实现文字截断功能
Sep 14 Javascript
深入理解bootstrap框架之入门准备
Oct 09 Javascript
JavaScript实现瀑布流布局的3种方式
Dec 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
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
js创建对象的方式总结
2015/01/10 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
js实现微信聊天效果
2020/08/09 Javascript
JS实现密码框效果
2020/09/10 Javascript
Python的迭代器和生成器
2015/07/29 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
python下载微信公众号相关文章
2019/02/26 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
python绘制玫瑰的实现代码
2020/03/02 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
单身旅行者的单身假期:Just You
2018/04/08 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
介绍一下write命令
2012/09/24 面试题
初一地理教学反思
2014/01/16 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
实习指导老师意见
2015/06/04 职场文书
Java无向树分析 实现最小高度树
2022/04/09 Javascript