#javascript #angular #typescript #angular-reactive-forms #angular-forms
Вопрос:
У меня есть два компонента-родительский и Дочерний.
Родитель сохраняет состояние группы форм, используемой в дочернем компоненте. Каждый раз, когда я получаю новые данные из внешнего источника, я передаю эти данные через шаблон и создаю новую группу форм и на основе одного свойства решаю, включена или отключена группа форм. Новые данные изменяются так, как я хочу, но состояние отключено/включено-нет.
Мой код:
Дочерний компонент
@Input() edvForm: FormGroup;
@Input() isBlocMainSupport: boolean;
@Input() data: Data;
ngOnChanges(changes: SimpleChanges): void {
this.setForm();
}
setForm() {
...
this.edvForm.addControl(
'supportType',
new FormControl({ value: supportType, disabled: !this.isBlocMainSupport })
);
}
Родительский компонент
edvForm: FormGroup;
isBlocMainSupport = true;
data: Data;
...
ngOnInit(): void {
this.sourceEvent$
.pipe(takeUntil(this.destroy$))
.subscribe(newData => {
this.newGraphicElements([newData]);
});
}
...
newGraphicElements(newData: Data[]) {
this.reset();
...
this.data = newData[0];
this.isBlocMainSupport = myCondition ? true : false;
}
...
reset() {
this.edvForm = new FormGroup({});
}
Родительский шаблон
<child-comp
*ngIf="isTheRightChild"
[data]="data"
[edvForm]="edvForm"
[isBlocMainSupport]="isBlocMainSupport"
></child-comp>
Чтобы возобновить, данные хорошо передаются и меняются каждый раз по мере необходимости.
Но состояние отключения не применяется с : «отключено: !this.isBlocMainSupport»
Ответ №1:
Я нашел решение на github: FormGroup disable()/enable() не работает сразу после инициализации #22556
Проблема в детекторе изменений. Следующий код работает :
this.changeDetector.detectChanges(); // use it before using disable/enable
this.form.controls['name'].disable();