我在阅读时将数组从Component
返回到Service
。但我在组件中未定义而不是组件中的数组结果。
服务:
getItems(): Promise<any>{
var items = [{id:1}{id:2}{id:3}];
return Promise.resolve(items);
}
组件A:
ngOnInit(): void {
this.service.getItems()
.then(result => this.items= result);
console.log(this.items);
}
);
}
答案 0 :(得分:0)
您的then
正在语句console.log(this.items);
之后工作,因为它是异步的。因此,在分配之前,请打印items
以及未定义的原因。将console.log
放入传递给then
的函数中。
ngOnInit(): void {
this.service.getItems()
.then(result => {
this.items= result;
console.log(this.items);
});
}
参见示例
查看console.log
s的序列。
let items = [];
function getItems() {
const arr = [{id:1},{id:2},{id:3}];
return Promise.resolve(arr);
}
getItems().then(result => {
items = result;
console.log(`Second - ${items}`);
});
console.log(`First - ${items}`);
答案 1 :(得分:0)
in service.ts
getItems(): Promise<any> {
var items = [{ id: 1 }, { id: 2 }, { id: 3 }];
return Promise.resolve(items);
}
在component.ts
中private items: Array<any> = [];
ngOnInit(): void {
this.service.getItems()
.then(result => {
this.items = result
console.log('this.items', this.items);
}
) }
答案 2 :(得分:0)
ngOnInit(): void {
this.service.getItems()
.then(result => this.items= result);
console.log(this.items);
}
);
该服务是异步调用,并且需要一些时间来解析承诺 立即控制台日志记录,您将其记录在同步上下文中 那时候this.items是未定义的。
将控制台.log移动到其中然后它将正常工作,如
.then(result => {
this.items = result
console.log(this.items);
}