Допустим, у меня есть служба, которая предоставляет BehaviorSubject
любому компоненту, который хочет получить последнюю версию некоторых данных.
export class DataService {
private messageSource = new BehaviorSubject<Data>(this.data);
currentMessage = this.messageSource.asObservable();
}
export class Component implements OnInit {
message:Data;
constructor(private data: DataService) { }
ngOnInit() {
this.data.currentMessage.subscribe(
message => {
this.message = JSON.parse(JSON.stringify(message))
}
)
}
}
Данные сложны:
class Data {
id:number
prop1:string
prop2:Array<{prop1:number, prop2:string}>
}
Данные изменяются со временем, и компоненты относятся только к последней версии данных. Мой вопрос: как компоненты могут знать, что именно изменило в данных, когда они получают уведомление?
Например, скажем, изменилось только одно поле одного элемента в prop2
. Каждый компонент получит новые данные, но они не знают, что именно изменилось. Знание того, что изменилось, открыло бы много возможностей для оптимизации рендеринга.
Есть ли встроенный способ сделать это с BehaviorSubject? Должен ли компонент выяснять различия после получения уведомления? Как это обычно делается?