Я добавляю новую группу форм при нажатии кнопки, которая добавляет группу форм в DOM. Затем я перебираю его, чтобы отобразить уже добавленную formGroup и динамически созданную formGroup.
Код: Выделить всё
formArrayName="OptionsList"
class="form-group row"
*ngFor="let option of optionsList; let i = index"
>
Question Option {{ i + 1 }}:
Is Correct?
Mark The Option as Correct
Remove
Взаимодействие с другими элементами формы обновляет значение динамически созданных элементов формы, но этого не происходит при взаимодействии с динамически созданными элементами. Да, функция проверки проверки запускается со значением false для IsCorrect, и это происходит и с OptionBody.
Код: Выделить всё
OptionsList: Yup.array((
Yup.object().shape({
OptionBody: Yup.string().required('Option text is required').min(5),
IsCorrect: Yup.boolean().notRequired(),
})
))
.required()
.min(2, 'At least two options required')
.test('one-correct', 'Exactly one option must be correct', (arr) => {
return Array.isArray(arr)
? arr.filter((x) => x?.IsCorrect).length === 1
: false;
}),
Код: Выделить всё
this.questionValidation.addValidators(
FormHandler.validate(this.validationSchema)
);
Код: Выделить всё
const formGroupData = (
this.questionValidation.get('OptionsList')
);
const control = formGroupData.controls;
control.push(
this.fb.group({
OptionBody: '',
IsCorrect: false,
})
);
this.questionValidation.addValidators(
FormHandler.validate(this.validationSchema)
);
this.questionValidation.updateValueAndValidity();
Код: Выделить всё
questionValidationПодробнее здесь: https://stackoverflow.com/questions/798 ... ngular-for
Мобильная версия