Angular中的@Input-less OnPush组件

时间:2018-06-05 18:59:32

标签: angular angular2-changedetection angular-changedetection

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

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

1 个答案:

答案 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);
    }
  }