Angular 4 опроса данных без переопределения элемента обновляется - PullRequest
0 голосов
/ 27 сентября 2018

Внутри компонента датчиков у меня есть следующий код, который опрашивает данные каждые 5 секунд:

  Observable
    .interval(this.sensorsRefreshRate * 1000)
    .startWith(0)
    .switchMap(() => Observable.fromPromise(this.getSensorsPromise(this.hubId)))
    .subscribe(res => {
      this.sensors = res.data;
    })

В шаблоне компонента я генерирую дочерний компонент Sensor для каждого элемента в массиве датчиков.

         <app-sensor
            [sensor]="sensor" 
            *ngFor="let sensor of sensors; trackBy: trackByFn">
          </app-sensor>

Дочерний компонент датчика отвечает за обновление датчика.

Проблема возникает, если обновление выполняется непосредственно перед тем, как API возвращает опрошенные данные.В этом случае похоже, что измененные данные заменяются старыми неизмененными данными.В следующий раз, когда данные будут опрошены, будут отображены изменения, сделанные пользователем.

Краткое объяснение:

  1. Обновление флага состояния датчика до "true"
  2. Между тем, API возвращает данные с момента обновления, флаг статуса был «ложным» в тот момент, похоже, что статус переопределяется
  3. После повторного опроса данных, исходное изменение отображается так, как должно бытьтак как у API есть свежие данные
...