1
我有兩個組件和兩個組件共享的共享服務。angular2主題不訂閱更改
shared.service.ts
// ..... top level codes are skipped
private pickAnalysisForBubble = new Subject<any>();
analysisForBubble$ = this.pickAnalysisForBubble.asObservable();
mapToggleToPointOrBubble(value) {
this.pickAnalysisForBubble.next(value);
}
utility.component.ts
在視圖(utility.component.html),有兩個單選按鈕,一個是預先選定的:
<input type="radio" name="rdbBubblePoint" class="rdbBubblePoint" value="Point" (change)="changeToPoint($event)"> Point<br>
<input type="radio" name="rdbBubblePoint" class="rdbBubblePoint" value="Bubble" (change)="changeToPoint($event)" checked="checked"> Bubble<br>
in component(utility.component.ts),有一種方法來獲取點擊事件:(我已經導入了shared.service
,並將此作爲一個供應商。)
changeToPoint(event){
# analysisInteraction is the shared service constructor
this.analysisInteraction.mapToggleToPointOrBubble(event.target.value);
}
map.component.ts
我已經導入了shared.service
並增加了一個構造函數。然後在ngOnInit
試圖subscribe
的變化,但這是行不通的。
# analysisInteraction is the shared service constructor
this.analysisInteraction.analysisForBubble$.subscribe(
data => {
this.DrawType = data;
console.log("Drawtype fixed");
});
我使用subject
來檢測在此基礎上tutorial的變化。我做錯了什麼?
是的,我已經在我的組件中添加了'sharedService'作爲提供者。 – Emu
我在我的''main.ts''文件中也在我的子部件中添加了'sharedService'。還是行不通。任何線索? – Emu
這就是問題;-)在這種情況下,每個組件都有自己的實例,不共享同一個實例。這是因爲分級注射器。 –