Оператор углового интервала rxjs (опрос) перерисовывает представление компонента каждый раз при получении данных - PullRequest
0 голосов
/ 14 сентября 2018

Мой компонент извлекает данные из службы следующим образом:

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>
...