我的组件通过以下方式从服务获取数据:
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>
问题是,每次重新获取数据时,都会重新呈现子组件,而不是父组件。我放了一个控制台.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>