参考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;
}
...
...
}
但是,每当我添加一个项目,什么也没有发生在导航栏即alert(id)
或onItemAdded()
使cartItemCount等可以得到自动更新不会自动调用。
什么问题?
你在哪里提供这种服务? –
我没有正确地得到您的问题,但在我的导航栏组件中,我已将它添加到[提供程序]中。我更新了我的问题。购物车服务直接与导航栏无关。 – Nitish