Я должен признать, что не до конца понимаю причины, стоящие за этим, но вы получаете ошибки «ExpressionChangedAfterItWasChecked» на userName.className
, который вы пытаетесь отобразить.Кажется, сначала проверяется userName.className
, а затем выполняется проверка состояния формы на основе событий, которые его обновляют, поэтому он всегда на шаг позади.Вы можете синхронизировать эти значения, выполнив дополнительный цикл проверки обнаружения изменений.
Внедрите ChangeDetectorRef
в ваш компонент и запустите detectChanges()
после проверки представления.
import { Component, AfterViewChecked, ChangeDetectorRef } from '@angular/core';
import { User } from './user';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements AfterViewChecked {
name = 'Angular 6';
topics = ['Angular', 'React', 'Vue'];
userModel = new User('Rob', 'rob@test.com', 5556665566, 'Angular', 'morning', true);
constructor(private ref: ChangeDetectorRef) {}
ngAfterViewChecked() {
this.ref.detectChanges();
}
}