1

我有一个场景,我OnPush在 Angular 中有 @Input-less 组件。如果我打电话markForCheck(),我的组件模板中的视图绑定将被检查?

我的意思是,我的组件是OnPush并且markForCheck()标记了所有要检查的祖先,并且因为我的组件没有@Input,所以 Angular 在这里的行为是什么?Angular 会跳过检查组件的视图绑定还是总是检查?

4

1 回答 1

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);
    }
  }
于 2018-06-05T19:06:40.263 回答