Angular - завершение дочернего процесса при родительском событии завершено - PullRequest
0 голосов
/ 10 декабря 2018

Контекст:
Работа с общей таблицей данных, которая имеет встроенную функцию редактирования.

Компоненты:

самый родительский компонент -data.table.component.(ts|html|css)
дочерний компонент - data.row.component.(ts|html|css)
дочерний компонент - data.cell.component.(ts|html|css)

Процесс:
встроенная функция редактирования включена из data.cell.componentпри завершении редактирования (с помощью клавиши ввода или размытия) событие будет отправлено на data.row.component, а затем на table.component.ts, это событие будет отправлено тому, кто использует компонент таблицы (полезная нагрузка $ event имеет информацию о том, какая строкаредактируется, какой столбец и что является новым значением)

Проблема:
после того, как потребитель обновит новые значения в базе данных (асинхронно), Как я могу узнать, что обновление компонента таблицы было выполненоуспешно или неудачно?

1 Ответ

0 голосов
/ 12 декабря 2018

Предлагаю создать сервис, обеспечивающий наблюдаемость (предмет).Компонент таблицы данных подпишется на эту наблюдаемую и будет уведомлен, как только асинхронный компонент обновит эту наблюдаемую.Пример:

@Injectable()
export class SaveNotificationService {
  public saveDone: Subject<void> = new Subject<void>();
}

В вашем компоненте таблицы данных у вас есть

constructor(private saveNotificationService: SaveNotificationService) {
  this.saveNotificationService.saveDone
    .pipe(takeUntil(this._destroyed))
    .subscribe(() => {
      // do the refresh here
    })
}

, а в вашем асинхронном компоненте сохраняются данные, которые у вас будут

saveData() {
  this.http.post(...).subscribe(() => {
    this.saveNotificationService.saveDone.next();
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...