Включите, когда установлен флажок Проверка в реактивных формах
Мне нужна помощь, чтобы включить строки только тогда, когда флажок установлен. Строки по умолчанию должны быть отключены, но когда флажок установлен только, эта строка будет включена. Вот ссылка на мой код
patchValues() {
let rows = this.myForm.get('rows') as FormArray;
this.orders.forEach(material => {
material.materials.forEach(x => {
rows.push(this.fb.group({
checkbox_value: [null],
material_id: new FormControl({value: x.id, disabled: true}, Validators.required),
material_name: x.name,
quantity: [null, Validators.required]
}))
})
})
}
2 ответа
Решение
Посмотрите на Demo & Src
Объяснение:
- Для включения или отключения поля ввода вам необходимо использовать следующий синтаксис
[attr.disabled]="myForm.get('rows').value[i].checkbox_value ? null: ''"
attr.disabled
, здесь attr для связывания со свойствами, которые не существуют непосредственно в элементеmyForm.get('rows').value[i].checkbox_value
, довольно прямой доступ к значению элемента управления формы.
Еще один подход - создать директиву
@Directive({
selector: '[enabledControl]'
})
export class EnabledControlDirective {
@Input() set enabledControl(condition: boolean) {
if (this.ngControl) {
if (this.ngControl.control) {
if (condition)
this.ngControl.control.enable();
else
this.ngControl.control.disable();
}
}
}
constructor(private ngControl : NgControl ) {
}
}
Тогда вы можете использовать как
<input class="col-md-6" formControlName="quantity"
[enabledControl]="row.get('checkbox_value').value" >