У меня есть модаль формы с Checboxes, ввод и выберите элементы. На флажке тикания некоторые входные и выбранные элементы должны быть отключены. В раскрывающемся спине, пожалуйста, выберите значение отображения с сохраненным значением как NULL, если отключено. Однако, даже если значения очищены на пользовательском интерфейсе и отключены, он не исправляет его с пустыми и нулевыми значениями. Это принимает предыдущие значения. < /P>
Управление формы действительно получает обновленное значение при выполнении PatchValue. Однако, если метод отключения вызывает контроль, обновленное значение теряется, и он получает неправильный. < /P>
Спасибо за вашу помощь < /p>
private disableControls() {
const isDiscountAPercentage = this.dynamicFormMenuForm.get('calcDiscountPercentage');
const discountPercentageInput = this.dynamicFormMenuForm.get('calcDiscountAmount');
const totalBillAmount = this.dynamicFormMenuForm.get('calcTotalBillAmount');
const specialOfferIncluded = this.dynamicFormMenuForm.get('specialOfferIncluded');
const extraCharge = this.dynamicFormMenuForm.get('extraCharge');
if (isDiscountAPercentage?.value == false) {
specialOfferIncluded?.enable();
discountPercentageInput?.disable();
totalBillAmount?.disable();
if (specialOfferIncluded?.value == false) {
extraCharge?.disable();
}
}
else {
specialOfferIncluded?.reset(false);
specialOfferIncluded?.disable();
extraCharge?.disable();
}
isDiscountAPercentage?
valueChanges.pipe(
distinctUntilChanged()
).subscribe(newValue => {
if (newValue === true) {
discountPercentageInput?.enable();
specialOfferIncluded?.
patchValue(false);
specialOfferIncluded?.disable();
extraCharge?.setValue('');
extraCharge?.disable();
totalBillAmount?.enable();
} else {
discountPercentageInput?.
setValue('');
discountPercentageInput?.
disable();
specialOfferIncluded?.
patchValue(false);
specialOfferIncluded?.enable();
extraCharge?.setValue('');
extraCharge?.disable();
totalBillAmount?.setValue('');
totalBillAmount?.disable();
}
});
// Subscribe specialOfferIncluded
changes
specialOfferIncluded?.
valueChanges.pipe(
distinctUntilChanged()
).subscribe(newValue => {
if (newValue === true) {
extraCharge?.enable();
isDiscountAPercentage?.
patchValue(false, { emitEvent:
false });
} else {
extraCharge?.setValue('', {
emitEvent: false });
extraCharge?.disable();
isDiscountAPercentage?.enable();
}
});
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... rect-value