1
私の角2アプリでは、ユーザーの現在のポイントを示すラベルがあります。角2は短時間のCSSクラスの追加/変更
点数が変更された場合、短時間ラベルのクラスを変更したいと思っています。何か変更があったことをユーザーに知らせるためのアニメーションを作成するためです。
場合、私は短い時間のために、ラベルのクラスを変更するにはどうすればよいif (this.userData.points != data.user.points)
を:私が観察を使用してユーザーのポイントを取得し、ポイント数が使用して変更された場合、私は確認することができます私のサービスで
<label class="label label-primary">
{{userService.user.points}}
</label>
ポイントの数は変更されましたか?
<label class="label label-primary" [class.label-animate]="pointsChanged">
{{userService.user.points}}
</label>
そして、あなたの観測可能に:
'setTimeout()'のコールバックを 'NgZone.run()'またはビューを更新するためのこれらのオプションの1つで囲む必要があると思います:http://stackoverflow.com/questions/34827334/ triggering-angular2-change-detection-manually – martin
私はローカルで試してみましたが、変更の検出を強制することなく機能しました。 –
@Martin、 'setTimeout()'はアンジェラのゾーンでサルパッチされています。 Joelは角度コードの中で(したがってAngularのゾーン内で) 'setTimeout()'を呼び出すので、タイムアウトが発生すると、コール検出機能が実行された後、変更検知が呼び出されます。 –