gpt4 book ai didi

javascript - 来自其他组件的 Angular 5 输入数组,导致长度为 0

转载 作者:搜寻专家 更新时间:2023-10-30 21:17:26 24 4
gpt4 key购买 nike

我将从服务中收集的数据放入数组中。我通过@Input 将此数组放入第二个组件,但在其中数组而不是长度为 18 的数组有 0;

TS:

  arr: Datas[] = [];


constructor(private dataService: DataService) {
}

ngOnInit() {
console.log("ng init");
this.getArraysFromData();

}

getArraysFromData() {
this.DataService.getDatas().subscribe((data: Datas[]) => {
for (let item of data) {
this.arr.push(item);
}
console.log("smartlamps from Map ", this.arr);
});
}

HTML:

<app-osm-generator [dataInput]="arr"></app-osm-generator>

我输入的组件

@Input() dataInput: Datas[];


ngOnInit(): void {
this.takeDataFromInput();
}

takeDataFromInput() {
console.log(this.dataInput.length); <-- is 0 must be 18
for(let item of dataInput) {
console.log(item);
}
}

最佳答案

您正在获取 console.log(dataInput.length); 因为它在分配数据之前被调用

有两种方法可以解决这个问题:

1) 仅在数据可用时包含app-osm-generator

<app-osm-generator *ngIf="arr.length > 0" [dataInput]="arr"></app-osm-generator>

2) 实现 OnChanges

ngOnChanges(changes: SimpleChanges) {
let data = changes.dataInput;
console.log('prev value: ', data.previousValue);
console.log('got name: ', data.currentValue);
console.log(data.length);
}

检查控制台将消除您对流程的所有疑虑

有关第二种方法的更多详细信息: READ


建议:

this.DataService.getDatas().subscribe((data: Datas[]) => {
this.arr = [ ...this.arr , ...data]; // instead of looping try out ES6's feature
console.log("smartlamps from Map ", this.arr);
});

关于javascript - 来自其他组件的 Angular 5 输入数组,导致长度为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766473/

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