OnPush组件内部触发的事件(包括viewChild)会引起组件的一次markForCheck Detached组件内部触发的事件不会引起组件的变化检测 OnPush组件的contentChild依然会在变化检测周期时进行自身的变化检测 OnPush进行markForCheck时,会以此对父组件进行markForCheck,一直到根组件 最顶层的OnPush或detach组件会进行NgDoCheck,但是他们的viewChild组件不会进行NgDoCheck,contentChild组件反而会…
在OnPush策略下,Angular不会运行变化检测(Change Detection ),除非组件的input接收到了新值.接收到新值的意思是,input的值或者引用发生了变化.这样听起来不好理解,看例子: 子组件接收一个balls(别想歪:))输入,然后在模板遍历这个balls数组并展示出来.初始化2秒后,往balls数组push一个new ball: //balls-list.component.ts @Component({ selector: 'balls-list', templat…
关于前端路由复用策略网上的文章很多,大多是讲如何实现tab标签切换历史数据,至于如何复用的原理讲的都比较朦胧,代码样例也很难适用各种各样的路由配置,比如懒加载模式下多级嵌套路由出口网上的大部分代码都会报错.我希望能通过这篇文章把如何复用路由的原理讲明白,让小伙伴能明明白白的实用路由复用策略,文字中有不详实和错误的地方欢迎小伙伴批评指正 对路由复用策略的理解 路由复用策略的是对路由的父级相同节点的组件实例的复用,我们平时看到的多级嵌套路由切换时上层路由出口的实例并不会从新实例化就是因为angula…
使用场景 打开菜单页面的时候,出现对应页面的页签.切换页签,原来的页面信息状态保留,关闭页签则保留的信息删除.使用路由复用策略,保存路由快照.实现效果如图所示 实现过程 概述: 1.在app.module.ts注册 providers: [ { provide: RouteReuseStrategy, useClass: CustomReuseStrategy } ], 2.新建RouteReuseStrategy 新建一个CustomReuseStrategy.ts 贴上代码(解决了位于三级菜…
引用:http://www.cnblogs.com/dengzy/p/5388357.html 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决.最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域.JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议. JSON的格式: JSON能够以非常简单的方式来描…
To understand how change detection can help us improve the proference, we need to understand when it works first. There are some rules which can be applied when use change detection: changeDetection: ChangeDetectionStrategy.OnPush 1. Change detection…
报错信息: ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'null: 8'. Current value: 'null: 4'. 报错触发: 在渲染时,连续多次修改Expression ,出现该问题 报错原因:Angualr中的change detection strategy,大概意思是在变更检测之后时…
我们将创建一个简单的MovieApp来显示有关一部电影的信息.这个应用程序将只包含两个组件:显示有关电影的信息的MovieComponent和包含执行某些操作按钮的电影引用的AppComponent. 我们的AppComponent将有三个属性:slogan,title和actor.最后两个属性将传递给模板中引用的MovieComponent元素. // app/app.component.tsimport {Component} from '@angular/core'; import {Mo…