私はこれについて合理的な説明があると確信していますが、なぜオブジェクトのプロパティはビューで更新されますが、プリミティブ型である変数はそうではないのかはわかりません。私はngrx/storeのobservablesを使用しているので、それが理由である可能性がありますが、私は他の非同期の状況でこれを見たように感じていますので、私はそれを理解しようとしています。角2の変更検出が.Subscribe()コールバックのプリミティブで機能しない?
例えば、私は、このテンプレートを持っている:私はスクリーンで表すテキストを検索する場合
ngOnInit() {
this.store.select('mainStoreReducer')
.subscribe((data: MyState) => {
this.zone.run(() => {
this.dataCounter = data.counter;
this.data = data;
});
}
:
<h1>{{data.counter}}</h1>
<h1>{{dataCounter}}</h1>
は、コンポーネントのための私の活字体クラスで私はこのような何かを持っていますdataCounter変数は更新されませんが、data.counterを表すテキストは更新されます。 zone.jsを強制的に実行させる余分なブロックさえも役に立ちません。 dataCounterは元のテキストを表示します(注:実際に何が起きるかは、dataCounterが初期状態の値を取得したものですが、後でsubscribeが呼び出されると更新されません。誰かがこれを説明できますか?あなたはハンドラが
data.counter
CHANGE_STUFF
あなたmainStoreReducer
あなたがこれを変異させるの内側にあるため、更新取得されたイベントのディスパッチ後に実行されていないサブスクライブお気づきのように https://plnkr.co/edit/gEeAKK31Yo6kATjFQY08?p=templates
問題を再現する完全な最小限の例をレデューサーのマニュアルを参照してください。 –
plunkerを提供してください – yurzui
投稿の最後にplunkを追加しましたが、plunkrに@ ngrx/storeを追加する方法がわかりません。 :/ – Jim