ChangeDetectorRef.markForCheck()和之间有什么区别ChangeDetectorRef.detectChanges()?
我只在SO上找到了关于NgZone.run()这两个函数之间的差异的信息,但不是这两个函数之间的区别.
对于仅提及文档的答案,请说明一些实际场景,以选择其中一个.
我正试图理解这个ChangeDetectionStrategy.OnPush机制.
我从读数中得到的结论是,通过比较旧值和新值来进行变化检测.如果对象引用未更改,则该比较将返回false.
然而,似乎某些情况下绕过了"规则".你能解释一下这一切是如何运作的吗?
我认为在讨论之后我非常清楚角度变化检测是如何工作的:为什么当[值]改变时,变化检测不会发生在这里?
但看看这个插件:https://plnkr.co/edit/jb2k7U3TfV7qX2x1fV4X ? p = preview
@Component({
selector: 'simple',
template: `
<div (click)="onClick()">
{{myData[0].name}}
</div>
`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class Simple {
public @Input() myData;
constructor() {
}
public onClick() {
}
}
Run Code Online (Sandbox Code Playgroud)
点击a,它改为c
据我所知,click事件触发了应用程序级别的更改检测,但[myData] ="testData"仍然引用同一个对象,我使用On Push on Simple,为什么会更改?
我碰巧ChangeDetectionStrategy在ngrx文档中看到了.它使用OnPush.
什么是ChangeDetectionStrategyAngular2,以及何时使用OnPush Vs Default?