タグ付けされた質問 「angular2-changedetection」

11
@Input()値がAngularで変更されたことを検出する方法は?
親コンポーネント(CategoryComponent)、子コンポーネント(videoListComponent)、およびApiServiceがあります。 私はこれのほとんどがうまく機能しています。つまり、各コンポーネントはjson apiにアクセスして、オブザーバブルを介して関連データを取得できます。 現在、動画リストコンポーネントはすべての動画を取得するだけです。これを特定のカテゴリの動画のみにフィルタリングしたいと思います@Input()。 CategoryComponent.html <video-list *ngIf="category" [categoryId]="category.id"></video-list> これは機能し、CategoryComponentの親カテゴリが変更されると、categoryId値が経由で渡されますが@Input()、VideoListComponentでこれを検出し、APIService(新しいcategoryIdを使用)を介してビデオ配列を再リクエストする必要があります。 AngularJS $watchでは、変数に対してaを実行したでしょう。これを処理する最良の方法は何ですか?

5
Angularで手動で変更検出をトリガーする
プロパティを持つAngularコンポーネントを書いていますMode(): string。 イベントに応答せずに、このプロパティをプログラムで設定できるようにしたいと思います。 問題は、ブラウザーイベント{{Mode}}がない場合、テンプレートバインディングが更新されないことです。 この変更検出を手動でトリガーする方法はありますか?

24
ExpressionChangedAfterItHasBeenCheckedErrorの説明
このエラーが発生し続ける理由を教えてください。 ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. 明らかに、私はそれを開発モードでのみ取得しますが、本番ビルドでは発生しませんが、それは非常に煩わしく、開発環境でエラーが発生してプロダクションに表示されないことの利点を理解できません- -おそらく私の理解不足のためです。 通常、修正は簡単で、エラーの原因となるコードを次のようにsetTimeoutでラップするだけです。 setTimeout(()=> { this.isLoading = true; }, 0); または、次のようなコンストラクタで強制的に変更を検出します。constructor(private cd: ChangeDetectorRef) {}: this.isLoading = true; this.cd.detectChanges(); しかし、なぜ私は常にこのエラーに遭遇するのですか?私はそれを理解したいので、将来これらのハックな修正を避けることができます。

14
* ngIfの@ViewChild
質問 @ViewChildテンプレート内の対応する要素が表示された後に取得する最もエレガントな方法は何ですか? 以下に例を示します。またPlunker利用できます。 テンプレート: <div id="layout" *ngIf="display"> <div #contentPlaceholder></div> </div> 成分: export class AppComponent { display = false; @ViewChild('contentPlaceholder', {read: ViewContainerRef}) viewContainerRef; show() { this.display = true; console.log(this.viewContainerRef); // undefined setTimeout(()=> { console.log(this.viewContainerRef); // OK }, 1); } } デフォルトでコンテンツが非表示になっているコンポーネントがあります。誰かがshow()メソッドを呼び出すと、それが表示されます。ただし、Angular 2の変更検出が完了する前に、を参照することはできませんviewContainerRef。私は通常、setTimeout(()=>{},1)上記のようにすべての必要なアクションをラップします。もっと正しい方法はありますか? にオプションがあることは知っていますがngAfterViewChecked、これにより無駄な呼び出しが多くなりすぎます。 ANSWER(プランカー)



3
markForCheck()とdetectChanges()の違いは何ですか
違いは何であるChangeDetectorRef.markForCheck()とはChangeDetectorRef.detectChanges()? 私はSOに関する情報のみを見つけましたNgZone.run()が、これら2つの関数の違いはわかりません。 ドキュメントへの参照のみの回答の場合は、どちらかを選択する実際的なシナリオをいくつか示してください。

1
Angular Ivyでは、手動による変更の検出に関して具体的に何ができますか?
この記事では、 アイビーは、しかし、将来のためのいくつかの可能性を開きます。これで、zone.jsなしでアプリケーションを実行し、変更の検出を半手動で処理できるようになります(Reactの場合と少し似ています)。これらのAPIはすでに存在しますが、実験的なものであり、文書化されておらず、おそらく近い将来変更される予定です。 Ivyの前にzone.jsなしでアプリケーションを実行することはすでに可能であったと思います。Ivyは変更の検出を半手動で処理できますか?それらの実験的なAPIはどこにありますか?ドキュメントはありますか?Ivyは引き続きzone.jsを使用していますか? 私の目標は、変更の検出を手動でトリガーして、変更の検出を最小限に抑えることです。それを行うための最良のオプションは何ですか。具体的には、Ivyを使用する場合の最良のオプションは何ですか。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.