долго искал, но ничего не мог найти.
У меня есть такой шаблон:
<learning-navigation *ngIf="(_navigationSelectedSafe$ | async) == _navigationLayout.location" [(selectMode)]="_navigationModeSelected"></learning-navigation>
Где:
private _navigationSelected$: Observable<string>;
private _navigationSelectedSafe$ = new EventEmitter<any>(true);
...
this._navigationSelected$.subscribe(res => {
...
this._navigationSelectedSafe$.emit(res)
});
с вводом обучающей навигации как установщика:
@Input()
set selectMode(mode: number) {
this.mode = mode;
}
Это вызывает ошибку:
ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'selectMode: null'. Current value: 'selectMode: 1'.
Я уже пытался изменить EventEmitter на BehaviourSubject, принудительно вызывая detectChanges () после ngInit и ngAfterChecked (хотя это не было бы оптимальным, даже если бы это работало), а также оборачивая его в контейнере, пытаясь передать режим напрямую в асинхронный режим компонент, просто управляя дисплеем с дополнительным, если.
Текущее решение работает, и, похоже, никаких побочных эффектов нет, но оно выдает ошибку независимо от того, когда режим меняется. Спасибо