我正在使用 TypeScript 学习 Angular 2。到目前为止,我已经编写了一些API 服务,它使用HTTP get 方法通过可观察对象向我提供json 数据。一切正常,我可以在我的 View 中使用数据,我也可以在我的组件中使用数据,但仅当我订阅 getData() 方法时。
为什么会这样?我还有哪些其他可能性可以使对象数组对我的组件中的所有方法可用,以便于迭代和管理?
示例组件:
export class SomeComponent implements OnInit {
public someData: DataObject[];
public constructor(private service: SomeService) {}
public ngOnInit(): void {
this.loadData();
this.useData();
}
private loadData(): void {
this.service.getData().subscribe(data=> {
this.someData = data;
this.someData.forEach(dataObject => {
// this works fine
});
});
}
private useData(): void {
this.someData.forEach(dataObject => {
// dataObject is (of type?) undefined, why?
});
}
}
最佳答案
这是因为 http 调用是异步的。您的 this.useData();
不会等待 this.loadData();
完成。这应该有效:
private loadData(): void {
this.service.getData().subscribe(data=> {
this.someData = data;
this.useData();
});
}
关于arrays - Angular 2 TS对象数组仅在订阅服务时定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40342218/