Угловая формная группа не отключена, когда содержит пустой формара формара _and_ Пользовательская форма управления формоHtml

Программисты Html
Ответить Пред. темаСлед. тема
Anonymous
 Угловая формная группа не отключена, когда содержит пустой формара формара _and_ Пользовательская форма управления формо

Сообщение Anonymous »

Я имею простую формную группу в угловом компоненте: < /p>

Код: Выделить всё

// app.component.ts, part 1
export class AppComponent implements OnInit {
protected form = new FormGroup({
ctl: new FormControl(),
arr: new FormArray([]),
});
< /code>
Formgroup может быть отключена через флажок: < /p>
  // app.component.ts, part 1

enabledCtl = new FormControl(true);

ngOnInit() {
this.enabledCtl.valueChanges.subscribe((enabled) => {
if (enabled) {
this.form.enable();
} else {
this.form.disable();
}
}
Formarray, arr , не представлен в HTML. FormControl, ctl связан с пользовательским компонентом, Custom-Control .

Код: Выделить всё


Enabled



< /code>
Пользовательский элемент управления реализует ControlValueAccessor и не более чем обертка вокруг другой формы: < /p>
// custom-control.component.ts
@Component({
selector: 'custom-control',
imports: [ReactiveFormsModule],
template: '',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => CustomControlComponent),
multi: true,
},
]
})
export class CustomControlComponent implements ControlValueAccessor {

protected ctl = new FormControl()

// All of the rest is boilerplate.

public writeValue(v: any): void {
this.ctl.setValue(v)
}

public registerOnChange(fn: (...args: unknown[]) => unknown): void {
this.ctl.valueChanges.subscribe(fn as any)
}

protected _onTouched = () => {}
public registerOnTouched(fn: (...args: unknown[]) => unknown): void {
const oldOnOnTouched = this._onTouched
this._onTouched = () => {
oldOnOnTouched()
fn()
}
}

public setDisabledState(isDisabled: boolean): void {
if (isDisabled) {
this.ctl.disable()
} else {
this.ctl.enable()
}
}

}
С помощью этой настройки, когда пользователь проверяет флажок, связанный с enabledctl , форма формы должна быть включена. Когда они снимают это, форма должна быть отключена. < /P>
Однако при проверке статуса форм группы она никогда не меняется: < /p>

Код: Выделить всё

Status: {{ form.disabled ? 'disabled' : 'enabled' }}
@if(form.enabled !== enabledCtl.value) {
[b] but should be {{ enabledCtl.value ? 'enabled' : 'disabled' }}[/b]
}
When the checkbox is unchecked, the FormGroup’s disabled flag doesn’t get changed and I get the following output in the HTML:

Status: enabled but should be disabled

The FormGroup’s status updates according to my Ожидания, если я сделаю любое < /em> одно из этих изменений: < /p>
  • Я заменяю FormControl на другой формат FormArray и удаляю связывание в HTML < /li>
    I Удалить FormArray из форм группы < /li>
    In -natural ht -natural ht ht ht ht -wintm ht -wintm ht ht -wintm ht ht -wintm ht -wintm formControlName = "ctl">
Только когда я использую пользовательскую форму управления формой и , есть формации Formarray в качестве его брата в форм -группе, не обновляется, как я ожидаю. /> Stackblitz < /p>

Подробнее здесь: https://stackoverflow.com/questions/796 ... marray-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Html»