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 相关文章推荐
javascript 导出数据到Excel(处理table中的元素)
Dec 18 Javascript
jquery ajaxSubmit 异步提交的简单实现
Feb 28 Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 Javascript
用javascript关闭本窗口技巧小结
Sep 05 Javascript
jQuery原理系列-常用Dom操作详解
Jun 07 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
ionic2自定义cordova插件开发以及使用(Android)
Jun 19 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
uni-app实现获取验证码倒计时功能
Nov 01 Javascript
JS函数式编程实现XDM一
Jun 16 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
PHP调用三种数据库的方法(1)
2006/10/09 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
深入浅析用PHP实现MVC
2016/03/02 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
php与js的区别是什么
2013/08/05 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
JS库之Highlight.js的用法详解
2017/09/13 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
js实现简单的秒表
2020/01/16 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
python实现汉诺塔算法
2021/03/01 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
python支付宝支付示例详解
2019/08/22 Python
python Kmeans算法原理深入解析
2019/08/23 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
Python如何将字符串转换为日期
2020/07/31 Python
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
销售人员中英文自荐信
2013/09/22 职场文书
综治工作心得体会
2014/09/11 职场文书
车辆年检委托书范本
2014/10/14 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
工作犯错保证书
2015/05/11 职场文书
简历自我评价范文
2019/04/24 职场文书