将数组存储到全局变量angular

问题描述 投票:0回答:4

我正在尝试将解析valuearray保存到全局array中。但全局array向我显示undefined

  dataUrl: string = "assets/data.csv";
  private data:[];
dataInit(){
    this.papa.parse(this.dataUrl, {
      download: true,
      complete: (result) => {
        // result.data.push(this.data);
        this.data = result.data
        // console.log(result.data, "inside parser");
        // console.log(this.data, "global array");
      }

    });
  }
  ngOnInit() {
    this.dataInit();
    console.log(this.data, "inside onInit");
}

控制台

undefined "inside onInit"

arrays angular global-variables
4个回答
1
投票

有两个原因-

  1. 您需要像[private data: Array<any>= [];这样初始化变量
  2. 您正在将值绑定到asyn方法中,并以同步方式合并该值。

1
投票

数据将在complete callback内部可用。因此,console.log(this.data)那边。

原因:complete是一种异步工作的回调方法。

dataUrl: string = "assets/data.csv";
data = [];
dataInit(){
    this.papa.parse(this.dataUrl, {
      download: true,
      complete: (result) => {
        // result.data.push(this.data);
        this.data = result.data            
        console.log(this.data);
      }

    });
  }
  ngOnInit() {
    this.dataInit();
}

0
投票

将数据属性的初始化更改为类似

private data = [];

private data: Array<T> = []

而不是T相应地键入数组


0
投票

将控制台日志放入异步代码的完整功能内。

由于papa.parse下载代码是异步的,因此控制台控制台日志将显示data的初始值,因为结果尚未准备好。


0
投票

因为this.papa.parse函数是异步的,所以在调用dataInit之后无法立即获取数据变量的值...最好在完整的回调中进行]]

dataUrl: string = "assets/data.csv";
private data:[];
dataInit() {
  this.papa.parse(this.dataUrl, {
    download: true,
    complete: (result) => {
      this.data = result.data
      this.toDo();
    }
  });
}

ngOnInit() {
  this.dataInit();
}

toDo(){
  console.log(this.data, "global array");
}
© www.soinside.com 2019 - 2024. All rights reserved.