我在Angular2中有一個應用程序。哪裏有一個包含導航鏈接的頂級組件等等。路由器插座嵌套在這裏。我希望對這些嵌套頁面之一進行操作,以反映頂層組件中的更改。Angular2 Observable service dosen't似乎是跨組件工作
我試圖在Angular2中實現Observable服務。它在同一個組件內工作。但是當我嘗試從根級別訂閱Observable時。我沒有得到任何事件。
我的服務是這樣的:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class Announcer {
// Observable sources
private cartTotalSource = new Subject<number>();
private wishlistTotalSource = new Subject<number>();
// Observable sources
cartTotalAnnounced$ = this.cartTotalSource.asObservable();
wishlistTotalAnnounced$ = this.wishlistTotalSource.asObservable();
// Service message commands
announceCartChange(value: number) {
this.cartTotalSource.next(value);
}
announceWishlistChange(value: number) {
this.wishlistTotalSource.next(value);
}
}
當我在它的工作原理成分的情況下使用它,我可以宣佈,並在同一文件中訂閱的更新:
ngOnInit(){
this.announcer.cartTotalAnnounced$.subscribe(total => {
this.cartTotal = total;
});
this.announcer.wishlistTotalAnnounced$.subscribe(total => {
this.wishlistTotal = total;
});
}
getCartAndWishlistTotal() {
this.cartService.getCartTotal(CartType.Cart, "")
.subscribe(total => {
this.announcer.announceCartChange(total);
});
this.cartService.getCartTotal(CartType.Wishlist, "")
.subscribe(total => {
this.announcer.announceWishlistChange(total);
});
}
但是,在我的頂級組件中(使用上面代碼片段中的ngOnInit()中完全相同的代碼)。用戶從不會觸發。
任何人都可以指出我在做錯什麼嗎?
你是否在根的提供者中註冊你的服務? –