Angular 4.x 修仙之路 —— 之学习笔记

参考地址:https://segmentfault.com/a/1190000008754631

本文宗旨:东一榔头西一棒子,零零散散提示点
  • 性能优化:减少检测链长度,实现局部的变化检测,使用onpush策略
  • ES5中,编译阶段,变量声明和函数声明会自动提升,而函数表达式不会自动提升。(原来js自己也有编译阶段);函数声明:function Animal(){}; 函数表达式:var Animal = function(){};
  • ES6、Typescrip等转换成ES5,类会转换成函数表达式
  • 基于上面原因,angular中使用forwardRef来解决依赖的先后定义问题(provider声明时用)
  • OpaqueToken与InjectionToken出现的原因:解决token起名(字符串)的重复问题
  • InjectionToken相比OpaqueToken的优势:避免用户使用OpaqueToken时忘记new Inject(opaqueTokenName)
  • 在angular中,host代表宿主的意思。宿主代表指令等所在的元素。
  • 指令分为:属性指令与结构指令,一个更改样式,一个更改结构
  • ngTemplateOutlet就是 ngTemplate出口 的意思,它的值对应一个ngTemplate引用
  • <ng-template> 用于定义模板
  • <ng-container> 是一个逻辑容器
  • 使用rxjs的防反跳debounceTime
  • 随时记得取消订阅
  • 所谓的模板变量就是指 #child
<child-component #child></child-component>
<button (click)="child.name = childName">设置子组件名称</button>
  • 组件可以继承,但只能继承逻辑部分,像@component定义的元数据不能继承
  • 组件通信的常用方式:@Input、@Output、@ViewChild、模板变量、MessageService、Broadcaster(后两个,本质上都是用的rxjs)
  • 基于 [译] 关于 ExpressionChangedAfterItHasBeenCheckedError 错误你所需要知道的事情 的理解:为啥先更新所有子组件或指令的输入属性值,再执行他们的ngOnInit,OnChanges,ngDoCheck等方法呢?答:你不给人家传入参数,人家怎么知道如何初始化等一系列操作。
  • 没有在模板中显示调用组件的,都要记得在entryComponents中声明,以让编译器将其编译。否则编译器会认为其是无用代码。
  • 如果没有在模板中显示调用组件,又没有通过路由的形式实例化,就只能动态创建组件实例了,需要用到ComponentFactoryResolver
  • 可以用<ng-container>进行逻辑分组,又不会产生dom节点
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,930评论 25 708
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,532评论 8 265
  • 白盔白甲披锦袍,银枪龙驹逞英豪。 乱军之中扶幼主,七进七出长坂桥。 忠义不贰侍先帝,汉中之战美名昭。 老当益壮仍当...
    卫公子无忌阅读 882评论 8 7
  • 五月即将过半, 海南的天气时阴时晴。 中午暑气沉沉, 和同学经过老树时, 会听见聒噪的蝉鸣。 也许就是这不经意间,...
    户在野阅读 156评论 0 0
  • 投射我拥有完美的睡眠。 投射我明日晨练。 投射我明日神清气爽。 投射我可以不参加周末活动。 投射我明日学习更有收获...
    Ai琳琳_六中玩换阅读 60评论 0 0