2017-08-13 85 views
1

我目前使用Papa Parse与Angular 2将一个csv列表加载到列表中,我希望能够将该列表传递给另一个组件。我能够读取csv数据并用控制台日志打印它们,但我无法解决“完整”功能之外的解析数据的结果。我知道这是因为解析文件是一个异步过程,我必须使用回调函数。我试图用回调函数来解决这个问题,但我仍然无法使用Papa Parse本身的“完整”函数之外的数据。无法达到“完整”功能之外的Papa Parse的结果

这是我尝试过的一个例子,但是这里的listOfLoads在convertloads方法中是未定义的,而不是在任何其他正常的同步方法中。

export class AppComponent { 


listOfLoads: Load[] = []; 

    constructor(){ 
    } 

    importFile(fileInput: any, callBack) { 
    let listOfLoads: Load[] = []; 
    let file = fileInput.target.files[0]; 


    let result = Papa.parse(fileInput.target.files[0], { 
     complete: function (results) { 
     callBack(results.data); 
     }, 
     header: true, 
     delimiter: ";" 
    }); 
    } 

    convertLoads(data) { 
    this.listOfLoads = deserialize<Load[]>(Load, data); 
    } 

} 

有没有办法将数据放入列表并在其他组件中使用它?我到处寻找解决方案。

回答

1

你可以给你的组件功能Papaparse。 一旦Papaparse加载数据,它会触发你的功能。 或者你可以创建一个observable,当数据加载完成后,你可以在subscribe块中做任何想做的事情。

我为你创建了一个有效的plunkr。你可以看看这个。

https://plnkr.co/edit/WFVYEQnH35DeTsNBS456

+0

可观察的例子工作完美!非常感谢你! –