组件交互共享变量通过所有应用Angular 2

时间:2017-01-23 06:20:47

标签: angular typescript

我有 app.component.ts header.component.ts users.component.ts shared.service .ts 一个变量" 选项"。

app.component.html 中,我有类似的内容:

<app-header></app-header>
<router-outlet></router-outlet>

app-heade r - 与 header.component.ts router-outlet 相关 - 与 users.component相关.TS

ngOnInit() app.component.ts 中,我执行ajax-request以获取&#34;选项&#34; 和设置:

sharedService.options = "result of ajax"

然后我想在标题用户组件的 ngOnInit()方法中使用 sharedService.options 变量。但有时候我有错误sharedService.options.property is undefined

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您在服务中使用了一个observable&amp;在ngOnInit中, 您订阅了该服务。 这是通常的模式。

像这样。

in service.ts

getAll():Observable<Object[]>{     
      return this.http.get(this.newsURL)
                .map(res=>res.json())
                .catch((error:any) => Observable.throw(error.json().error || 'Server error'));
  }   

在ngOnInit中 你在构造函数&amp;中创建了一个服务对象。

this.myObject.getAll.subscribe(
 //logic goes here what u want to do for service return type.
)