2017-08-13 11 views
1

現在、角度2のPapa Parseを使用してcsvリストをリストにロードしています。このリストを別のコンポーネントに渡すことができます。私はcsvデータを読んでコンソールログでそれらを印刷することができましたが、私は '完全な'機能の外で解析されたデータの結果に対処することができません。ファイルの解析は非同期プロセスであり、コールバック関数を使用する必要があるため、これがわかります。私はこれをコールバック関数で修正しようとしましたが、Papa Parse自体の「完全な」関数の外ではデータを使用できません。'complete'関数の外で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がデータをロードすると、それはあなたの機能を引き起こします。 または、観測データを作成することができます。データロードが完了した時点で、サブスクリプションブロックで必要な処理を実行できます。

私はあなたのために働くplunkrを作成しました。あなたはこれを見ることができます。

https://plnkr.co/edit/WFVYEQnH35DeTsNBS456

+0

観察可能な例が完璧に機能しました!どうもありがとうございました! –

関連する問題