решение для сообщения об ошибке «NgFor поддерживает только привязку к итерируемым объектам, таким как массивы», не работает - PullRequest
0 голосов
/ 25 июня 2018

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

Итак, в моем html-файле я написал следующий код:

<section fxLayout="column" fxLayoutAlign="center center">
      <mat-selection-list #products>
        <mat-list-option *ngFor="let product of products">
            {{product.name}}
        </mat-list-option>
      </mat-selection-list>
</section>

В файле .ts у меня есть следующий код:

  products;


  constructor(private productService: ProductService) { }

  ngOnInit() {
    this.loadAll();
  }


  private loadAll(): Promise<any> {
    this.products = [];
    return this.productService.getAll()
    .toPromise()
    .then((result) => {
        result.forEach(product => {
          this.products.push(product);
        });
    })
    .catch((error) => {     
        console.log(error);
    });
  }

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

Ошибка: не удается найти другой поддерживающий объект '[object Object]' типа 'object'. NgFor поддерживает только привязку к итерациям, таким как массивы.

Дело в том, что продукты - это (!) Массив.

Тем не менее, я получаю это сообщение об ошибке, как будто this.products фактически не является массивом.

Что здесь происходит?

1 Ответ

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

У вас уже есть массив, поэтому нет необходимости снова преобразовывать в массив,

  result.forEach(product => {
          this.products.push(product);
  });
  this.products = Array.of(this.products); //remove this line
...