2016-08-17 92 views
2

我想創建一個可在各個angular2組件和導入模塊之間訪問的應用程序範圍變量。Angular2中的應用程序變量(RC5)

我已經看過依賴注入在我的app.module和思考也許我可以設置一個類的屬性。然而,隨着新的角度RC5版本,這看起來像我想要做的過度複雜。

另外,我想使用@Inputs和@Outputs級聯數據並訂閱更改,但是,這似乎不可能在模塊之間。

我會非常感謝這樣做的最簡單方法的建議。

在我的特定應用程序方面,我有一個導航欄組件,我想在除一個之外的所有路線上顯示。所以我在我的app.component模板上使用了* NgIf條件,然後我希望能夠從各種子組件更改爲顯示導航欄,而無需將導航欄組件嵌入到所有子模塊和組件中(其中得到棘手與組件所模塊之間共享。我的一些路線是進口的模塊中。

回答

2

您可以創建一個共享服務。

類似的東西:

import { Injectable } from '@angular/core'; 

@Injectable() 
export class GenericService { 
    data:any = {}; 
} 

,然後將其添加到您的app.module。

之後,您可以將它注入到組件並添加可從所有組件訪問的數據。

+0

它可以在導入的子模塊中訪問嗎?到app.module中? –

+0

另外,如果我有'''導出類AppComponent {0} showheader:boolean = false; 構造函數(private uiService:UiService){ this.showHeader = uiService.navOn; } }'''那麼showHeader不會更新,如果我改變其他地方的價值? –

+0

它不會。看到這個https://plnkr.co/edit/Ii4t7o6NEUdg3uvxvdUn?p=preview你有兩個解決方案:將'{{name}}'改成'{{gs.data.name}}'(在plunker中試試)或者使用一個可觀察的和「訂閱」你的服務(你可以很容易地在網上找到例子) – Maxouhell