簡體   English   中英

在 ngAfterViewinit 上推送未定義的數組

[英]pushed Array undefined on ngAfterViewinit

我已經在 Angular ngOnInit 上的數組上推送了一些值,並且數據在 ngAfterViewInit 上變得不可用,它將特定值顯示為未定義

randomNUMber = [];

 ngOnInit() {

this.apiServices.getLineChart(this.coinId).subscribe(resc => {

          for (let i =0 ; i < 8 ; i++) {
            this.randomNUMber.push(Number(resc.data[i].price));
          }

          console.log('price1', this.randomNUMber[2]); //it Works
        });

}

ngAfterViewInit() {
console.log('price1', this.randomNUMber);  //this Wors too
console.log('price1', this.randomNUMber[2]); // But this doesnt work 
}

您在 ngOnInit 中有異步調用,但未及時完成。

ngOnInit() 不等待異步調用,所以你可以這樣做:

...
this.myObs$: Observable<any>;

ngOnInit() {
   this.myObs$ = this.apiServices.getLineChart(this.coinId).pipe(map(resc => {
      let randomNUMber: number[] = [];
      for (let i =0 ; i < 8 ; i++) {
         randomNUMber.push(Number(resc.data[i].price));
      }

      return randomNUMber;
    }));
 }

如果您使用 ngAfterViewInit,我想您需要在模板上正確顯示此數據。 所以你需要使用異步 pipe 來訂閱 this.myObs$

<div *ngIf="(myObs$ | async) as randomNUMber">
   <p *ngFor="let number of randomNUMber">
    {{ number }}
   </p>
</div>

參見異步 pipe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM