Допустим, у меня есть одна большая модель 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?