将数组存储到全局变量angular中

时间:2019-11-01 05:46:22

标签: arrays angular global-variables

我正在尝试将解析value的{​​{1}}保存到全局array中。 但全局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"); }

5 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:1)

有两个原因-

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

答案 2 :(得分:0)

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

private data = [];

private data: Array<T> = []

代替 T 相应地键入您的数组

答案 3 :(得分:0)

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

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

答案 4 :(得分: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");
}