問題タブ [angular2-changedetection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - アプリが最初にロードされたときの Angular2 変更検出
したがって、最初にアプリをロードすると、静的コンテンツのみがロードされます。つまり、非同期パイプがあるコンテンツはまったくレンダリングされません (通常、サーバーの応答後にレンダリングされるはずのコンテンツ)。動的コンテンツは、リンクなどの上にカーソルを置いたときにのみ読み込まれます。変化検出がまったくトリガーされていないように感じます。なぜこれが起こるのか誰にも分かりますか?どんな助けでも大歓迎です。しばらくこれで立ち往生しています。ありがとう。
angular - markForCheck() と detectChanges() の違いは何ですか
ChangeDetectorRef.markForCheck()
とはどう違いChangeDetectorRef.detectChanges()
ますか?
SOの違いに関する情報のみを見つけましNgZone.run()
たが、これら 2 つの関数の違いはありません。
ドキュメントへの参照のみを含む回答については、いくつかの実際的なシナリオを示して、どちらかを選択してください。
angular - Firebase が Angular 2 で変更検出を繰り返しトリガーしないようにするにはどうすればよいですか?
Firebase は、Angular/Zone モンキー パッチ WebsocketsetInterval
などのために、変更検出をトリガーする多くの内部非同期呼び出しを使用します。アプリを操作していないときでも、常に変更検出のカスケードが発生していることがわかります。特にモバイルでは速度が低下します。
このデフォルトの動作は便利かもしれませんが、現在私が Firebase を使用している方法では、ビューを更新する必要がある時期をかなり厳密に制御できます。そのため、Firebase からのコールバックは、いずれにせよ変更検出が手動で行われるような方法で使用されます。
OnPush
私が取り組んでいる変更検出戦略を に設定すると、ここで役立つことはわかっていますが、あらゆる角度からこれを攻撃したいと考えています。
私はゾーンに精通してrunOutsideAngular
いますが、すべての非同期呼び出しが Firebase モジュール内で発生しているため、ここに適用するかどうかはわかりません。
Firebase に角度ゾーンの外ですべてのビジネスを行わせるにはどうすればよいですか?
編集:問題を示すコード例:
angular - Angular2 - 親オブジェクトが変更されたことを子に通知し、子がそのテンプレート内で ngIf を再起動できるようにします
この質問と同様の問題がありますが、2つの回答のどちらもうまくいかないため、質問が古くなっているようです。
子コンポーネントは、入力として渡された複雑なオブジェクトからデータをレンダリングするだけですProposal
(ユーザー コントロールはまったくないため、イベントを発生させたり、何かを渡したりする必要はありません)。
テンプレートの関連部分は次のとおりです。配列を反復し、プロパティをチェックして、次を使用して異なるテキストを表示します*ngIf
。
親で、ユーザーはチェックボックスをクリックして「is_fitted」を true または false に変更できます。親はドメイン ドライブ フォームを使用しています。親のngOnInit
には、次のコードがあります。
プロパティを正しく更新します。私はそれを見ることができますconsole.log
。*ngIf
問題は、埋め込まれたroom.is_fitted
値が変更されたときに、子に再起動/再処理させるにはどうすればよいですか?
ViewChild を使用してこのアイデアを実装しようとしたので、ngOnInit の上記のコードは次のようになります。
しかし、それもうまくいきません。子のnotifyChangeが正常に呼び出されました:
ビューは更新されません -*ngIf
ロジックは再処理されません。
angular - 動的コンポーネントのAngular 2 OnPush変更検出
内部にさまざまな種類のコンポーネントを動的に作成する Angular コンポーネントがあります。フック@Input
を介して独自のプロパティを子コンポーネントのプロパティにバインドします。OnChanges
このバインディングは、子コンポーネントの変更検出がデフォルトに設定されている場合に正常に機能します。次に、新しい入力が検出され、コンポーネント テンプレートが更新されます。
ただし、変更検出が OnPush の場合は機能せず、変更は検出されません。新しい不変オブジェクトである文字列がコンポーネント@Input
プロパティに割り当てられているため、変更が検出されるはずです。
デモンストレーションするプランカーは次のとおりです: https://plnkr.co/edit/0wHQghtww2HXVbC27bC1
この親から動的な子へのプロパティ バインディングを ChangeDetectionStrategy.OnPush で動作させるにはどうすればよいですか?