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 エラーについて知っておくべきすべてのこと。この記事はこのエラーを詳しく説明しています。役に立つことを願っています。
