【发布时间】:2018-06-26 10:41:38
【问题描述】:
我有一个具有以下方法的服务:
public GetCaseData(){
const url = environment.api_url;
const headers = new Headers();
headers.append('Content-Type', 'application/json');
return this._http.get(url, { headers: headers })
.map(response => {
return response.json();
});
}
在我的 app.component.ts 中,我这样称呼它:
constructor(private _caseService : CaseService) {}
ngOnInit(): void {
this._caseService.GetCaseData().subscribe(data => {
this._caseService.caseData = data;
});
}
我想将this._caseService.caseData 分享给我的其他组件Home 和Contact,但在这些组件的OnInit 中,this._caseService.caseData 是未定义的。
以家为例,
constructor(private _caseService: CaseService) { }
ngOnInit() {
console.log(this._caseService.caseData); //is undefined here because it
// is called before the data comes back
}
我知道为什么(因为组件在数据返回之前已初始化),但我不知道如何解决?
我在家里放了一个吸气剂,我看到了渲染的数据。返回数据后,getter 是否会在生命周期的后期被调用:
ngOnInit() {
this.data = this._caseService.caseData;
console.log('this.data ', this.data) //undefined
}
get caseData()
{
return this._caseService.caseData; //data rendered on html page
}
当我执行以下操作时,它说它需要 : 而不是 data. 它还抱怨应该有一个 , ngOnInit 关闭 }
ngOnInit() { this.concatCaseData$ = this._caseService.caseData$.map(data => { 返回 { data.OfficialCaseName} }
}
【问题讨论】:
标签: angular