Angular 角度4,试图理解变化检测
我试图理解change detection和ChangeDetectionStrategy.OnPush实际上是如何工作的,下面是一个我无法理解的奇怪的例子: 我使用以下模板创建父组件:Angular 角度4,试图理解变化检测,angular,angular2-changedetection,Angular,Angular2 Changedetection,我试图理解change detection和ChangeDetectionStrategy.OnPush实际上是如何工作的,下面是一个我无法理解的奇怪的例子: 我使用以下模板创建父组件: <app-matrix-reader *ngFor="let m of fooService.getMatrices()" [matrix]="m"></app-matrix-reader> 子组件应用程序矩阵读取器具有输入文本 <input type="text" [(n
<app-matrix-reader *ngFor="let m of fooService.getMatrices()" [matrix]="m"></app-matrix-reader>
子组件应用程序矩阵读取器具有输入文本
<input type="text" [(ngModel)]="matrix.a" /><br/>
如果我只是多次点击输入(即使没有改变其值),就会调用函数getMatrix
为什么调用函数getMatrix()?我还将changeDetectionStrategy.OnPush放在一起,这样只有当组件的输入被更新时,才应该检查和更新组件
谢谢你看这个答案
(单击)
或某个主机侦听器)从组件触发(这是您的情况)
如果我只是多次点击输入(即使没有
更改其值)调用函数GetMatrix
您正在启动,因此angular会将树标记到要检查的组件并执行更改检测查看此答案
(单击)
或某个主机侦听器)从组件触发(这是您的情况)
如果我只是多次点击输入(即使没有
更改其值)调用函数GetMatrix
您正在启动angular,因此angular会将树标记到要检查的组件并执行更改检测angular只是检查输入和输出后是否有更改,要检查是否需要将原始值与当前值进行比较,Sangular只是检查输入和输出后是否有变化,为了检查它是否需要将原始值与当前值进行比较,有没有办法避免它?我不明白为什么即使使用ChangeDetectionStrategy.OnPush,它也会发生这种情况,它应该设置ChecksEnabled=false,对吗?@user2010955 Angular resets ChecksEnable当我看到处理事件时,pfff,我的应用程序在一个复杂的多层树中创建了许多子组件,并且随着时间的推移,它变得很慢。我必须了解更改检测是如何工作的,跳过一些无用的默认更改检测周期。看看这个答案,有没有办法避免它?我不明白为什么即使使用ChangeDetectionStrategy.OnPush,它应该设置ChecksEnabled=false,对吗?@user2010955 Angular resets ChecksEnable当我看到handle事件时,pfff,我的应用程序在一个复杂的多级树中创建了很多子组件,并且随着时间的推移变得缓慢,我必须理解变更检测的真正工作原理,跳过一些无用的默认变更检测周期看看这个答案