Как заставить тип объекта, возвращаемый из Observable, в массив объектов в Angular? - PullRequest
0 голосов
/ 03 июня 2018

Я получаю ответ, используя GET, как этот.

constructor(private http: HttpClient) { }

items: Item[];
stuff: any[];

ngOnInit() {
  const url = ...;
  this.http.get(url)
    .subscribe(next => {
      console.log(next);
      console.log(next.length);
      this.items = next;
      this.stuff = next;
    });
}

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

<div ngFor="let item of items">
  ->{{item?.id}}
</div>

<div ngFor="let item of stuff">
  ->{{item?.id}} 
</div>

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

Я попытался использовать map и forEach на next значение, но я получил сообщение об ошибке, говорящее, что Object не является массивом .В среде IDE было предложено добавить рабочий массив к синтаксису, чтобы он стал next.array.forEach , но он даже не был выполнен, создавая много красных чернил.

Что мне делать?(Не уверен, что гуглить на этом этапе.)

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Вы можете преобразовать объект в массив перед передачей в шаблон object-2-array-angular-4

или использовать пользовательский канал для преобразования объекта в массив

0 голосов
/ 03 июня 2018
donkeyObservArray: Observable<Donkey[]>;
donkeyArray: Array<Donkey>;

this.donkeyObservArray.subscribe(donk=> {
this.donkeyArray = donk;

console.log(this.donkeyArray);

и быть счастливым ...

Или набрать:

donkey: Donkey= null;

getDonkey(): Donkey{
    this.donkey = new Donkey();

this._http.get<Donkey>(...your ws link)
      .subscribe(data => {
        this.donkey = data;
...