Вот мое репо: https://github.com/richarddavenport/why
Я не могу воспроизвести эту проблему на stackblitz.com или codeandbox.io.
Я получаю Ужасная ошибка:
ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'undefined'. Current value: '[object Object]'. It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook?
Вид моего дочернего компонента:
<div>{{fetching$ | async | json}}</div>
<form [formGroup]="form" ngxsForm="state.form"></form>
Обработчик My Action в состоянии:
@Action(FetchAction)
fetchAction() {
console.log('Dispatched --> fetch');
return of(true).pipe(delay(15000));
}
Если вы измените delay()
на 0 вот так, ошибки нет:
@Action(FetchAction)
fetchAction() {
console.log('Dispatched --> fetch');
return of(true).pipe(delay(0));
}
Если вы удалите форму из представления дочернего компонента, ошибки нет:
<div>{{fetching$ | async | json}}</div>
Есть действия, которые отправляются из ngxsForm
директива для первоначальной синхронизации c состояния, но я не могу сказать, являются ли они причиной проблемы или нет.