【发布时间】:2019-03-12 07:51:17
【问题描述】:
假设我有一个大型 Json 模型,我的后端发送到我的前端,看起来像这样:
{
dataA: { //some object },
dataB: { //some object },
dataC: { //some object },
...
}
现在假设我有 ComponentA 将 dataA 作为@Input(),ComponentB 将 dataB 作为@Input() 等等:
@Component({
selector: 'comp-a'
})
class ComponentA {
@Input() _dataA;
}
@Component({
selector: 'comp-b'
})
class ComponentA {
@Input() _dataB;
}
// .... other components
@Component({
selector: 'app',
template:`
<comp-a [_dataA]="dataA"></comp-a>
<comp-b [_dataB]="dataB"></comp-b>
...
`
})
class AppComponent {
}
我想让这些组件使用 OnPush 更改检测策略。
当收到一个新模型时,可能会发生模型中的数据字段与之前模型中的先前值没有变化,所以我不希望它们再次作为@Input() 传递给组件以避免白白运行变更检测。
在将其数据作为@Input() 传递给我的组件之前,是否有某种巧妙的方法可以在前端检测模型的变化,并仅在它们各自的数据发生变化时通知它们?还是应该让 Angular 自己执行更改检测? OnPush 在这里真的合适吗?
【问题讨论】:
标签: angular rxjs angular2-changedetection