2017-08-08 19 views
2
public onChange(event: Event) { 
    let files = event.target['files']; 
    let list: string[]; 
    console.log(files); 
    for (var i = 0; i < files.length; i++) { 
     if (FileReader && files && files.length) { 
     let fileReader = new FileReader(); 
     fileReader.onload =() => { 
      let infoFile: string = fileReader.result; 
      list.push(infoFile);   
     }; 
     fileReader.readAsDataURL(files[i]); 
     } 
    } 
    console.log(list); 
    let preview = document.querySelector('img'); 
    preview.src = list[0]; 
    }; 

私は入力タイプ= "ファイル"をクリックしたときに私のcomponent.tsにメソッドを持っていますonthange()が呼び出されました。私はfileReader.resultが空でないことを確認するなぜこれは起こっているのですか?どのようにこの問題をいくつかのアイデアを解決する。未定義の配列

答えて

6

あなたは、最初のリストを初期化する必要があります:あなただけ

let list: string[] 

を行うときにのみ、この変数は、文字列の配列になりますコンパイラに指示

let list: string[] = []; 

を。しかし、実行時には、それを初期化していないため、未定義です。

+1

それはの助けに感謝は多分あなたは私がリストを使用するときのためにループの外で、この配列を使用する方法を知っているMatiusz.V7 @ –

+0

何の問題も働きません[0]私は、コンソールで –

+0

を助けて幸せ、 –

関連する問題