我想分享的服務組件,對於這一點,我已經創建service.ts其中代碼如下:角2 - 共享服務在負載
import { Subject } from 'rxjs/Subject';
export class CommonService {
CommonList = new Subject<any>();
}
當然,這項服務是供應商列表中的app.module.ts 然後,我有一個組件邊欄。 從側邊欄組件我想要訂閱此服務:
ngOnInit() {
this.subscription = this.CommonServicePrivate.CommonList.subscribe(
(result: any) => {
console.log(result);
}
);
}
這是問題所在,如果我嘗試在此服務的app.component.ts通過一些方法添加一些列表:
click(){
this.CommonService.CommonList.next([{"some_key":"some_value"}]);
}
這實際上有效,但是當我嘗試這個時:
ngOnInit(){
this.CommonService.CommonList.next([{"some_key":"some_value"}]);
}
它不起作用。
問題是我想將此服務傳遞給加載應用程序上的組件。
在ngAfterViewInit的情況下,當我試圖這樣的結果使一些模板,我得到錯誤: ExpressionChangedAfterItHasBeenCheckedError:它檢查後表達發生了變化。先前的值:'未定義'。當前值:
如果有人有這樣的經歷,請你分享給我。 謝謝。
我猜你正在尋找您需要的組件右側數據的組件加載之前路由器的決心? –
葉氏,因爲有關補充工具欄的信息從REST API來了,我需要自動加載它,但還有一點就是這個側邊欄,我應該在另一個組件加載以及,所以我真的不希望兩次調用這個API,解決方案是,我將其存儲在服務,從元器件我會調用這個服務,但問題是,正如我所說:通過它的工作方法,但onload事件 - 它不工作,有時給我錯誤: 例外:表達發生了變化檢查完畢後。 –