Как извлечь переданные данные события из генератора событий в одном классе компонентов? - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть таблица данных, данные которой обновляются после обновления одного из ее элементов.

Для запуска обновления данных я отправляю событие:

updateEvent = new EventEmitter<{ value: User }>();

refreshListForUser(user: User) {
  this.updateEvent.emit({
    value: user
  });
}

И это событиеобрабатывается следующим образом:

merge(this.updateEvent, this.searchTermEvent, this.sort.sortChange, this.paginator.page)
  .pipe(
    startWith({}),
    switchMap(() => {
      this.isLoadingResults = true;
      return this.getUsers(this.searchTerm, this.sort.active, this.sort.direction, this.paginator.pageIndex);
    }),
    map((usersApi: UsersApi) => {
      this.isLoadingResults = false;
      this.isRateLimitReached = false;
      this.currentPageNumber = usersApi.currentPageNumber;
      this.elementsPerPage = usersApi.elementsPerPage;
      this.totalElements = usersApi.totalElements;
      this.totalPages = usersApi.totalPages;
      return usersApi.users;
    }),
    catchError(() => {
      this.isLoadingResults = false;
      this.isRateLimitReached = true;
      return observableOf([]);
    })
  ).subscribe((users: User[]) => {
    this.dataSource.data = users;
  });
}

Работает как положено, данные обновляются все в порядке и список обновляется.

Но как получить объект пользователя, переданный в событии?

И должен ли я использовать источник событий для такого случая использования?В конце концов, это все в одном классе.

У меня тот же вопрос с другим подобным событием в том же классе компонентов.

Было бы неплохо получить строку поиска из события поиска, вместо этогоиспользования переменной-члена:

searchTermEvent = new EventEmitter<{ value: string }>();
searchTerm: string;

search(searchTerm: string) {
  this.searchTerm = searchTerm;
  this.searchTermEvent.emit({
    value: this.searchTerm
  });

  if (this.paginator) {
    this.paginator.firstPage();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...