В моем Angular (9) приложении я получаю от WebsocketService наблюдаемый массив объектов, например:
public objects$: Observable<MyClass[]>;
ngOnInit(): void {
this.objects$ = myWebsocketService.get()
Затем я повторяю это с помощью *ngIf
и для каждого объекта вызываю компонент для его рендеринга:
<table>
<tr *ngFor="let element of objects$ | async">
<td><my-component [item]="element"></my-component><td>
Это работает. Но это будет означать, что каждый раз, когда объекты $ изменяются, каждый экземпляр my-component должен быть перезагружен. Мне это кажется очень неэффективным! Было бы гораздо лучше: а) перезапускать только те, которые на самом деле изменились, и б) даже не повторно инициализировать мои компоненты, а сохранить их, обработать их наблюдаемыми и подписаться на них. Но я не знаю, как сформулировать такое поведение в сочетании с *ngFor
- Любая помощь приветствуется!