У меня есть динамический массив, который я хочу отобразить в представлении компонента, когда некоторые элементы добавлены/удалены внутри.Render динамический массив в представлении Angular2
Массив оказывает ngOnInit()
метода в моем App компонента (TS):
import { Component, OnInit } from '@angular/core';
import { CartService } from './cart/cart.service';
import '../style/app.scss';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
cartItems: any;
image: any;
item: any;
constructor(public cartService: CartService) { }
ngOnInit(){
this.cartService.cart$.subscribe((val) => {
console.log(this.cartService.cartArr)//console shows the array properly, but nothing is shown in the view if I remove "console.log"
});
}
}
"Вид" для массива внутри моего приложения Component (HTML):
<ul class="cart">
<li class="cart__item" *ngFor="let item of cartArr">
...
</li>
</ul>
My CartService:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class CartService {
public cart$ = new BehaviorSubject(null);
public cartArr = [];
constructor(){ }
public addToCart(prod) {
this.cartArr.push(prod);
this.cart$.next(this.cartArr);
}
}
Так интересно, как визуализировать массив в компоненте html и почему мой код не работает за пределами консоли?
Вы должны использовать трубу 'async', поскольку Angular автоматически обрабатывает' unsubscribe() 'для вас. Если вы решите использовать вариант 1, не забудьте вызвать 'unsubscribe()' в 'ngOnDestroy' –