2017-04-04 14 views
0

後、私はこのようになりますシンプルなAngular2テンプレートを持っている消えます私の見解では100項目のリストが表示されますが、数秒後(5〜15秒後)、エラー/警告なしで消えます。アイテムは〜10秒[Angular2、* ngFor]

どうしてですか?

+0

プランカまたは他の作業中の最小限の例が参考になります。 –

+0

@Kinduser私はplunkrを作成しましたが、まったく動作していないようです。私はバグがすぐに起こったのか、何か間違っているのかどうかはわかりません:https://plnkr.co/edit/US3uPVe4jVfElGNkOXCx?p=preview – alexandernst

答えて

0

forループがmap変数の反復処理を終了する前に、あなたは(その時点で)messages変数にmap要素を空に割り当てているので、実際には、目に見える変化を受信しません。

可能な解決策は、ループが終了するのを待つためにsetTimeout関数を追加することです。

setTimeout(() => { 
    this.messages = a.values(); 
}, 200); 

Plunker link

:フェロープログラマは、我々がここで少し問題を持っている、それはどのようにループを終了するためa.values()機能が待機しないことがありますか?私はsetTimeoutで修正することができましたが、それは長期間有効ではありません。

誰でも何故このように動作するのですか?

+0

これはplunkrの問題を解決しますが、初期の問題。なぜデータが消えるのでしょうか?どのように私はそれの根本的な原因をデバッグできますか? – alexandernst

+0

@alexandernst '' for'ループが終了する前に '.values()'関数が呼び出されている可能性があるので、正直言って、plunkerの問題は別の質問に値するでしょうか?これは奇妙で、この質問には私よりも賢い人が必要です。そして、あなたの問題について - これはなぜそれが消えているかを判断するのが難しい、 'values()'関数が私にとって疑わしいと思われる。 –

+1

はい、私は同じことを考えています。たぶん 'values()'は、Angularがまだそれを使用していることを正しく検出できないため、ChromeのGCが数秒後に削除する一時的なイテレータを作成していますか? – alexandernst