Global Events in Angular 2を参照しています。新しいアイテムがカートに追加されたときにイベントを発行するカートサービスを実装しようとしています。私は、カートのアイテムなどの私の電話番号を表示する(カートの子ではない)別のコンポーネントと呼ばれるナビゲーションバーで、このサービスイベントにサブスクライブAngular2サービスエミッタサブスクライブ失敗
マイカートサービス:
export class CartService {
public itemAdded$: EventEmitter<any>;
...
constructor(private http: Http){
this.itemAdded$ = new EventEmitter();
this.cart=[];
}
addToCart(id: any): any {
this.itemAdded$.emit(id);
return this.http.get( this.myUrl + 'add' + '/' + id + '/', { withCredentials:true})
.toPromise()
.then(response => response.json())
}
...
...
}
私のナビゲーションバーコンポーネント:
私はアイテムを追加するたびに@Component({
directives:[ROUTER_DIRECTIVES, Cart],
providers:[CartService],
})
export class Navbar implements OnInit{
...
totalCost: any;
cartItemCount : any;
addedItem: any;
constructor(private cartService: CartService){
this.cartService.itemAdded$.subscribe((id: any) => {
alert(id);
this.onItemAdded(id);
this.fetchCartElements();
});
}
private onItemAdded(item: any): void {
// do something with added item
this.addedItem = item;
}
...
...
}
はしかし、何もcartItemCountなどが自動的に更新されますことができるように、すなわちalert(id)
またはonItemAdded()
自動的に呼び出されていないナビゲーションバーには起こりません。
何が問題になりますか?
? –
質問が正しく表示されませんでしたが、Navbarコンポーネントで[プロバイダ]に追加しました。私はそれで私の質問を更新しました。それ以外の場合、カートサービスはnavbarと直接関係ありません。 – Nitish