допустим, у нас есть массив объектов, как показано ниже:
[
0: {'id': 0, 'title': 'ABC', value: '113' },
1: {'id': 1, 'title: 'BCD', value: '242' },
...
99: {'id': 99, 'title: 'ZAQ', value: '971' },
]
Массив объектов - это информация, необходимая в различных компонентах приложения.Например, component A
нужно только получить обновленные данные id=0
, тогда как component B
нужно только id=2
, id=6
.Массив объектов будет меняться со временем, поэтому существует субъект, который его содержит.
Массив измененных объектов отправляется различным компонентам, как показано ниже:
private testSubject = new Subject<any>();
public notifyTestChanged(changedData: any): void {
this.testSubject.next(changedData);
}
public onTestChanged(): Observable<any> {
return this.testSubject.asObservable();
}
Другой компонентподписаться на testSubject
чтобы получить массив, и я перебираю массивы, чтобы найти, существует ли объект в массиве измененных объектов.
onTestChanged.subscribe((changedData) =>
changedData.find((data) =>
return componentchanged.id === data.id))
// componentchanged.id is a parameter in the component, an identity for component.
Есть ли способ подписаться на изменения без необходимости зацикливаниячерез массив объектов в каждом компоненте, чтобы получить нужные данные, необходимые компоненту?Я избегаю создания 1 субъекта для каждого объекта, поскольку массив объектов может содержать сотни объектов.