Обработка асинхронного обещания перед ngOnInit Angular - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть запрос, который возвращает данные для таблицы, который должен обрабатываться как обещание дождаться загрузки данных.Чтобы загрузить данные в таблицу, я должен использовать async / wait, но это портит все другие функции / методы.

Как сохранить данные в currentList без использования async / wait для ngOnInit ()?Или есть другой способ?

async getEducationList(): Promise<any> {
  return this.educationList = await this.applicationClient.getEducations()
  .toPromise()
  .then((res) => {
    this.educationListAll = res;
  });
}

async ngOnInit() {
  await this.getEducationList();
  this.currentList = this.educationListAll;
}

Примечание. This.applicationClient.getEducations () является наблюдаемым

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Решил проблему, поместив вызов API в наблюдаемую, а затем переместил код из ngOnInit в другую функцию initTable.

getEducationList(): Observable<Education[]> {
  return this.applicationClient.getEducations();
}

initTable(data) {
  // Some code to handle the data
}

ngOnInit() {
  this.getEducationList().toPromise().then(data => {
    this.loader = false;
    this.initTable(data);
  });
}
0 голосов
/ 28 февраля 2019

попробуйте так

async ngOnInit() : Promise<void> {
  this.currentList = await this.applicationClient.getEducations().toPromise();
  this.initTable(data);
}

initTable(data) {
  // Some code to handle the data
}
...