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 相关文章推荐
用于自动添加Digg This!按钮的JavaScript
Dec 23 Javascript
js中window.open打开一个新的页面
Aug 10 Javascript
jQuery监控文本框事件并作相应处理的方法
Apr 16 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
Jan 13 Javascript
jQuery判断浏览器并动态调整select宽度的方法
Mar 02 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
动态JavaScript所造成一些你不知道的危害
Sep 25 Javascript
js如何获取网页所有图片
May 12 Javascript
Vue 组件间的样式冲突污染
Aug 31 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
vue cli使用融云实现聊天功能的实例代码
Apr 19 Javascript
关于uniApp editor微信滑动问题
Jan 15 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
多数据表共用一个页的新闻发布
2006/10/09 PHP
php 在文件指定行插入数据的代码
2010/05/08 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
js常用代码段整理
2011/11/30 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
php使用递归与迭代实现快速排序示例
2014/01/23 Python
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python科学画图代码分享
2017/11/29 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
浅谈Python爬虫基本套路
2019/03/25 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
Python文件操作基础流程解析
2020/03/19 Python
机械设计制造专业个人求职信
2013/09/25 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
班班通项目实施方案
2014/02/25 职场文书
马智宇结婚主持词
2014/04/01 职场文书
个人授权委托书
2014/04/03 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
村委会贫困证明范本
2014/09/17 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
Go 语言结构实例分析
2021/07/04 Golang
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
centos8安装MongoDB的详细过程
2021/10/24 MongoDB