Угловой, асинхронный вызов с объектом? - PullRequest
0 голосов
/ 11 февраля 2019

В большинстве примеров, которые я нашел в Интернете, показано, как использовать канал async с массивом или массивом объектов в качестве ответа на вызов URL API.

Ситуация такова, что иногда выЯ не получу объекты массива, но вы получите объект, который содержит смесь объектов и массивов внутри.и вы все равно захотите использовать | async в своем HTML.как это один

В следующем Stackblitz я добавил [data]="remoteData | async", и моя таблица не будет показывать никаких данных.получить следующее сообщение об ошибке:

Ошибка: InvalidPipeArgument: '[объект объекта], [объект объекта], [объект объекта], [объект объекта], [объект объекта], [объект объекта]

Само собой разумеется, если я сниму его, данные покажут.

Очевидно, я знаю, что мой метод работает для массива в качестве ответа, в данном случае ответ является объектом.Я знаю, что вы предполагаете использовать Observables (creationSubject), чтобы сделать эту работу, но с трудом пытаетесь сделать это правильно.

Итак, я могу оставить async pipe?даже если ответ является объектом или ему нужно subscribe и unsubscribe вручную?

Что я пробовал до сих пор: строка 18 внутри моего сервиса

this.listSource = apiCall;
    return this.listSource;

, но я получаю сообщение об ошибке:

В "Наблюдаемом" отсутствуют следующие свойства из типа "BehaviorSubject": _value, value, getValue, next и еще 9.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

В вашем контроллере remoteData не Наблюдаемое, но фактическое значение.

ngOnInit() {
  this.remoteData = this.remoteService.getData();
}

Теперь это Наблюдаемое и async труба будет работать.

0 голосов
/ 11 февраля 2019

Вам не нужно использовать асинхронный канал в вашем случае, просто проверите код, удалите асинхронный канал и все хорошо.Вы можете прочитать больше о том, как использовать асинхронный канал и зачем это нужно, в этом уроке https://angular.io/tutorial/toh-pt6#asyncpipe

...