gpt4 book ai didi

arrays - Angular 2 TS对象数组仅在订阅服务时定义

转载 作者:太空狗 更新时间:2023-10-29 18:26:21 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com