2016-08-17 56 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