假设我们有一个类似下面的计数器组件,它知道如何改变它的状态,并且可以有一个触发increment()
函数的按钮等。
@Component({...})
export class CounterComponent {
@Input()
count: number = 0;
increment() {
this.count++;
}
decrement() {
this.count--;
}
}
这是否会使其免于OnPush
通知策略?换句话说,符合OnPush
条件的组件必须不会改变自己的状态。
答案 0 :(得分:1)
由于counter是数字但不是object,因此它的值将被复制到子组件。所以在里面改变它不会影响changeDetection机制。 Bacuse onpush trategy仅从父视角的输入值变化开始变化检测。因此,如果在组件内部更改计数器时需要视图反射 - 请使用默认更改策略。