В моем контроллере страницы в какой-то момент мне нужно обновить пользовательский интерфейс, и кажется, что вызов chageDetector.detectChanges () является обязательным в этой конкретной точке.Что происходит: я переназначаю строковое свойство в моей модели, значение которого изменяет некоторые из моего пользовательского интерфейса.Как только я вызываю метод detectChanges (), это свойство получает его старое значение .Я изменю только имена и значения в своем коде, но помимо этого я работаю с следующим:
Прежде всего, у меня есть enum:
enum TypeEnum { TypeA: 'A', TypeB: 'B' }
Тогда мой контроллер:
selectType(type: TypeEnum) { //type has value 'B'
this.verify = true;
this.setFieldXOnTypeChange(type);
//this.model.type has value 'A'
this.model.type = type; //this.model.type = 'B'
//now this.model.type has value 'B'
//other stuff is calculated
this.scrollToBottom();
this.onFieldYReturn(null, true, true);
this.typeAccordionHeader.value = type;
if (type == typeEnum.TypeB) {
this.model.date = this.today;
}
this.setPageTitleForType(type);
//before call > this.model.type: 'B'
this.changeDetector.detectChanges();
// after call > this.model.type: 'A'
}
Такое поведение я никогда не испытывал раньше: я знал, что цель changeDetector - применить изменения модели к компоненту, ничего больше.Может кто-нибудь объяснить поведение и, в случае, как его избежать?Заранее спасибо!