2017-12-02 3 views
0

私はAngular2を使用しています。 、elementRefのsetTimeOut

this.saved.nativeElement.style.display = 'block'; 

そして私は、数秒後にそれを隠すしたい:私はブロックを表示

@ViewChild("saved") public saved: ElementRef; 

次へ:

<div class="saved" #saved> 
    <p>Saved</p> 
    <i class="fa fa-check" aria-hidden="true"></i> 
</div> 

私はTSでアクセス:私がdiv要素を持っています私のコードのこの部分は正しくありません:

setTimeout(this.closeSavedWindow, 3000); 

closeSavedWindow() { 
    this.saved.nativeElement.style.display = 'none'; 
    } 

にエラーがある

TypeError: this.saved is undefined

+0

これは、あなたの関数の内部と外部で使用してこれはconsole.log(this)をデバッグすることができる2つの異なるコンテキストを持っていますcloseSavedWindoe() –

答えて

0

は、あなたが直面している問題は、コンテキストに変更する予定ですsetTimeout(this.closeSavedWindow.bind(this), 3000);

0

を試してみてください。 closeSavedWindow()関数内では、のウィンドウオブジェクトを参照し、savedという名前のプロパティは含まれていません。したがって、エラー。

これは簡単にそれを呼び出すときに、関数のコンテキストの値を結合することによって固定することができます。..

setTimeout(this.closeSavedWindow.bind(this), 3000); 
+0

Plunkrテスト中に使用しました.. https://plnkr.co/edit/JGtZYUN2xkQoJDM9n7BS?p=preview –