变更检测策略
以及
推送
. 主要的区别是OnPush只适用于
不变的
对象和数组。只有当它被传递给另一个引用时,OnPush的变化检测才会被触发。因此,它非常适用于可观察对象,因为您可以将变量的任何更改处理为“next”;在主题中,每次更改都返回一个新对象,而上一个对象被丢弃。
@Component({
....
changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyOnPushComponent {
person:Person = {
name: 'Tom',
age: 15
}
changeName(){
this.person.name='Ralf'; // Doesnt triger the change detection of OnPush because it is the same reference (would be on default)
}
changePerson(){
this.person={
name: 'Ted',
age: 20
}; // OnPush change detection is triggered because it refers to a new object
}
}