Angular 中的@Input-less OnPush 组件
@Input-less OnPush Components in Angular
我有一个场景,我在 Angular 中有 @Input-less OnPush
组件。如果我调用 markForCheck()
,将检查组件模板中的视图绑定?
我的意思是,我的组件是 OnPush
并且 markForCheck()
标记了所有要检查的祖先,并且因为我的组件没有 @Input,所以 Angular 在这里的行为是什么? Angular 会跳过检查组件的视图绑定还是会一直检查?
从ChangeDetectorRef
的源代码示例中可以看出。 视图 显示在调用 markForCheck()
时更新的值 numberOfTicks
。请注意,该组件没有 @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);
}
}
我有一个场景,我在 Angular 中有 @Input-less OnPush
组件。如果我调用 markForCheck()
,将检查组件模板中的视图绑定?
我的意思是,我的组件是 OnPush
并且 markForCheck()
标记了所有要检查的祖先,并且因为我的组件没有 @Input,所以 Angular 在这里的行为是什么? Angular 会跳过检查组件的视图绑定还是会一直检查?
从ChangeDetectorRef
的源代码示例中可以看出。 视图 显示在调用 markForCheck()
时更新的值 numberOfTicks
。请注意,该组件没有 @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);
}
}