ウェブサイト検索

javascript - ExpressionChangedAfterItHasBeenCheckedError: Angular2を使用してチェックした後に式が変更されました


私はこのエラー ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'undefined'. Current value: '0'. を次のように解決しようとしました:

TS:

 import {
     ChangeDetectionStrategy
 } from '@angular/core';
 @Component({
     templateUrl: './page.html'
     changeDetection: ChangeDetectionStrategy.OnPush
 })
 public Pages: Object;

 ngOnInit() {
     loadAllGuides() {
         this.ApiService
             .getAllPages()
             .subscribe(
                 Pages => {
                     this.Pages = Pages.data;
                 }, error => {
                     console.log(error);
                 });
     }
 }

私が ChangeDetectionStrategy を使用したとき、コンソールのエラーは解決しましたが、もう一つ問題が発生しています。ページが開いたときにクリックしないとデータが表示されません。ページ上でランダムにクリックするとデータが読み込まれます。誰か助けてくれませんか。

回答 #1

まず changeDetection: ChangeDetectionStrategy.OnPush を削除してください

次に、あなたは以下のように持っています:
public Pages:Object; => 変数には最初の大文字を使わないようにしてください。その代わりに public pages:Object; を使用してください。

では、こちらがあります:

 Pages => {
    this.Pages = Pages.data;
}

試す :

response => {
    this.pages = response.data;
}

回答 #2

初期値を提供する必要があると思います。

例えば -

public Pages = null;

詳細についてはこの記事をお読みください - ExpressionChangedAfterItHasBeenCheckedError エラーについて知っておくべきすべてのこと。この記事はこのエラーを詳しく説明しています。役に立つことを願っています。