我有一个场景,我在Angular中有@Input-less OnPush
组件。如果我拨打markForCheck()
,我的组件模板中的视图绑定会被检查吗?
我的意思是,我的组件是OnPush
,markForCheck()
标记要检查的所有祖先,因为我的组件没有@Input,Angular的行为在这里是什么? Angular会跳过检查组件的视图绑定还是会一直检查?
答案 0 :(得分:1)
正如您从ChangeDetectorRef
的源代码示例中看到的那样。 视图显示调用numberOfTicks
时更新的值markForCheck()
。请注意,该组件没有@Input()
绑定。
@Component({
selector: 'cmp',
changeDetection: ChangeDetectionStrategy.OnPush,
template: `Number of ticks: {{numberOfTicks}}`
})
class Cmp {
numberOfTicks = 0;
constructor(private ref: ChangeDetectorRef) {
setInterval(() => {
this.numberOfTicks++;
// the following is required, otherwise the view will not be updated
this.ref.markForCheck();
}, 1000);
}
}