Зацикливание Angular

238
13 июля 2018, 15:10

building.service.ts

getAll(): Observable<BuildingModel[]> {
    return this.http.get(this.config.buildings);
  }

building.component.ts

  getBuildings(){
    this.buildingService.getAll().subscribe(buildings => this.buildings = buildings);
return this.buildings;
  }

building.component.html

<div *ngFor="let building of getBuildings()">
  <p>{{building.name}}</p>
</div>

Начинает зацикливаться вызов бэка, если в ngFor получать массив с помощью метода getBuildings. Но если делать через ngOnInit работает отлично. Почему происходит зацикливание?

Answer 1

Проблема в функции:

getBuildings(){
    this.buildingService.getAll().subscribe(buildings => this.buildings = buildings);
    return this.buildings;
}

Данная функция вызывается при каждом цикле получения изменений. Сделайте следующим образом:

 <div *ngFor="let building of this.buildings">
     <p>{{building.name}}</p>
 </div>

А функцию getBuildings уже в удобном для Вас месте, переписав её следующим образом:

getBuildings(){
    this.buildingService.getAll().subscribe(buildings => this.buildings = buildings);
}
READ ALSO
Как обратиться к элементу JQuery

Как обратиться к элементу JQuery

Есть элементы class1Каждый из них содержит один дочерний элемент с class2

232
`[Intervention]` Unable to preventDefault inside passive event listener due to target being treated as passive. See &lt;URL&gt;

`[Intervention]` Unable to preventDefault inside passive event listener due to target being treated as passive. See <URL>

Неожиданно выскочила такая ошибкаУпал частично плагин twentytwenty

390
добавление в корзину

добавление в корзину

подскажите как реализовать добавление в корзину на jquery, получилось сделать добавление количества товара, а вот цену распарсить не получается,вот...

199