我試圖在任務完成時提供警報 - 用戶可能在當時處於多個頁面中的任何一個。警報應顯示給所有頁面。Angular 2 - 跨多個瀏覽器窗口的單一服務提供商
我使用實施BehaviorSubject
的提供商,這是我的app.component.ts網頁服務 - 單個實例
在我app.component.html我有兩個組成部分,一個警報時,其他火警警報。
<alert></alert>
<submit-service></submit-service>
該服務發送到呈現警報的警報組件。 這工作正常,但只有在提交服務的頁面(而不是任何其他頁面) - 提交功能也在警報組件。
submit-service
利用 public emit: BehaviorSubject<model> = new BehaviorSubject(new model());
一旦事件完成它,然後觸發關閉this.emit.next(_model);
在警報分量I訂閱事件
ngOnInit(): void {
this.service.emit.subscribe(data=> {
this.fireAlert(data);
}
});
}
,所以我想主要的問題是,我如何跨多個頁面跨多個實例訂閱單個服務?
編輯1
道歉的模糊性,通過網頁我的意思是獨立的瀏覽器窗口或標籤即window.open
據我所知,這不是真的有可能。您必須訂閱每個「響應」新數據的組件中的observable,否則他們不會知道發生了變化。所以(如果我正在閱讀這個權利),你做得對。你能澄清它在做什麼是不可取的嗎?我無法從你原來的帖子中辨認出來。 – joshrathke
我想我不明白的部分是「多頁」。在Angular上下文中,這有點令人困惑。你是指應用程序中的多個組件? – joshrathke
當然,基本上我想以某種方式擴展跨多個頁面的服務和排放,而不僅僅是同一頁面中的多個組件。即使我創建了提供程序的單個實例,但該實例僅適用於該頁面內的子組件。然後每個頁面都有它自己的父級實例(因此它贏得了訂戶)。所以想知道如何在多個頁面上創建一個全局實例,如果不可能的話,可能會有什麼樣的解決方法或人們可能已經完成了。 – Googs