Sam*_*ham 6 javascript observable typescript angular2-services angular
所以我试图订阅一个从本地JSON文件返回数据的简单服务.
我已经设法使服务工作,我可以在函数中注销它,但是当我在angular 2组件中订阅服务时,它总是未定义的.我不知道为什么?任何帮助将非常感激.
API服务
export class ApiService {
public data: any;
constructor(private _http: Http) {
}
getData(): any {
return this._http.get('api.json').map((response: Response) => {
console.log('in response', response.json()); //This logs the Object
this.data = response.json();
return this.data;
})
.catch(this.handleError);
}
}
Run Code Online (Sandbox Code Playgroud)
零件
export class AppComponent {
public data: any
public informationData;
constructor(private _api: ApiService) {}
public ngOnInit(): void {
console.log(this.getDataFromService()); // This return undefined
}
public getDataFromService() {
this._api.getData().subscribe(response => {
this.informationData = response;
return this.informationData;
});
}
}
Run Code Online (Sandbox Code Playgroud)
Deb*_*ahK 30
也许有些图片有帮助?
这里的数字表示操作的顺序.
subscribe返回的Observable.get请求被提交给服务器进行处理.ngOnInit方法已完成.此后的任何代码subscribe都无法访问该movies属性,因为尚未返回数据.
在某个晚些时候......
在步骤#8之前尝试访问电影属性会导致错误.
Ami*_*mit -1
尝试使用:
getData(): any {
return this._http.get('api.json');
}
Run Code Online (Sandbox Code Playgroud)
或者
getData(): any {
return this._http.get('api.json').map((response: Response) => {
response.json();
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17594 次 |
| 最近记录: |