Мой компонент извлекает данные из службы следующим образом:
ngOnInit() {
interval(5000)
.pipe(
startWith(0),
switchMap(() => this.rawMaterialDataService.returnData())
)
.subscribe(data => {
this.rawMaterialProductData = data;
});
}
Затем он переводит его в другой компонент, например:
<section *ngFor='let stock of rawMaterialProductData trackBy:stock?.key'>
<app-raw-material-view [stockGroupData]='stock'></app-raw-material-view>
</section>
Проблема заключается в том, что каждый раз, когда данные повторно выбираются, дочерний компонент перерисовывается, но не родительский компонент. Я поместил console.log в метод Init дочернего компонента, и каждые 5 секунд срабатывает сообщение журнала, что означает, что Init запущен.
Таким образом, проблема в том, что у моего дочернего компонента есть раскрывающиеся шаблоны, на которые смотрит пользователь, но каждый раз, когда компонент повторно отображает шаблоны, они возвращаются в исходное состояние.
Как видите, я пытался trackBy
решить эту проблему, но это не помогло.
- Правка -
Вот компонент, в котором данные используются в
<table (click)=collaps()>
<thead>
<tr>
<th id='th1'>{{stockGroupData.key}}</th>
<div class="topnav-right">
<th *ngIf="!expandedIndex" class='headingIcon'> <i class="material-icons">expand_more</i></th>
<th *ngIf="expandedIndex" class='headingIcon'> <i class="material-icons">expand_less</i></th>
</div>
</tr>
</thead>
<tr *ngIf="!expandedIndex">
Test
</tr>
</table>