ホームページ > 記事 > ウェブフロントエンド > Angular の変更検出 (Change Detection) メカニズムを理解する
関連チュートリアルの推奨事項: 「angular チュートリアル」
開発プロセス中、トップページのデータが更新されないという問題が発生しました。フロントエンド ページは補間式を使用してバックグラウンド データ フィールドをバインドします。バックグラウンド インターフェイスが正常に呼び出された後、データ フィールドは変更されますが、現時点ではフロントエンド ページは自動的には更新されません。次のコードに示すように、これは補間式の非常に基本的な使用法であり、特別なことは何もありません。
<span class="info-box-number text-success">{{sumDataDto.thirdAll}}</span>
this.platformDataProxy.getSumData(input) .subscribe((result: SumDataDto) => { if (result) { this.sumDataDto = result; } });
この問題は、Angular - 変更検出の機能に関係しています。使用されるフレームワークは ABP フレームワークであり、フレームワークによって自動生成されたページには属性 changeDetection
が追加されます。この属性は、現在のコンポーネントの変更検出戦略が OnPush
であることを示します。
@Component({ templateUrl: './home.component.html', styleUrls: ['./home.component.css'], animations: [appModuleAnimation()], changeDetection:ChangeDetectionStrategy.OnPush })
変更検出戦略には 2 つのタイプがあります:
デフォルト: Default
戦略はデフォルトの戦略です。値が変更される限り、 、コンポーネントとその子孫コンポーネントがチェックされます。
OnPush: OnPush
この戦略では、入力データ (@Input
) の参照が変更された場合、またはイベントがトリガーされる、変更検出。この戦略は完全ではありませんが、非常に効率的です。
最初に変更検出モジュールを導入します
import { ChangeDetectorRef } from “angular”;次に変更検出オブジェクトを宣言します
constructor(private changeDetection:ChangeDetectorRef) {}インターフェイス呼び出しが成功した後に変更検出メソッドを呼び出します
this.platformDataProxy.getSumData(input) .subscribe((result: SumDataDto) => { if (result) { this.sumDataDto = result; this.changeDetection.detectChanges(); } });これは少し面倒ですC# を手動で呼び出すゴミのリサイクル機構の匂い。
参考資料:をご覧ください。 !プログラミング教育
- https://links.jianshu.com/go?to=https://segmentfault.com/a/1190000010928087
#https://links.jianshu.com/go?to=https://www.cnblogs.com/lskzj/p/11143233.html- #プログラミング関連の知識について詳しくは、
以上がAngular の変更検出 (Change Detection) メカニズムを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。