Угловая реактивная форма управляет всеми отчетами ng-допустимой и родительской формы как ng-допустимыми, но отправка по-прежнему отключена до нажатия на элемент управления формой

#angular #angular-reactive-forms

Вопрос:

Надеюсь, я смогу получить некоторую помощь в отладке этого приложения. Проблема в том, что кнопка «Отправить», по-видимому, не синхронизирована с моделью представления.

Например, у меня есть форма с элементом управления select, который является обязательным полем. Параметры выбора создаются динамически с помощью службы API, поэтому при загрузке формы выбор уже имеет предварительно выбранный набор параметров и должен быть действительным.

Однако кнопка «Отправить» отключена! единственный способ включить кнопку «Отправить» — это просто нажать на форму и вручную установить выбранную опцию (даже если это та же опция, которая была установлена при загрузке формы). Это взаимодействие приводит к включению отправки.

При проверке загруженной HTML-формы форма имеет ng-допустимые стили и не отображается ng-недопустимый.

Что может привести к тому, что кнопка не будет синхронизирована с представлением и сообщенным допустимым состоянием элемента управления и родительской формы?

Комментарии:

1. Вы можете добавить некоторые примеры кода, которые вы пробовали

Ответ №1:

Переходите к Реактивным Формам. Будет легче исправить.

 Template.html
    <form [formGroup]="formName">
        <mat-form-field>
            <mat-label>LABEL</mat-label>
            <input matInput formControlName="controlName"/>
        </mat-form-field>
    </form>
    
    ...
       <button mat-raised-button color="primary" (click)="onSubmit()"
           [disabled]="fChildComponent?.invalid || f.invalid">SUBMIT</button>
   
 

компонент.ts

 @ViewChild(ChildComponent) child: ChildComponent;

get f(): FormGroup { return this.form; }
get fChildComponent(): FormGroup { return this.child.fchildForm }
 

Тогда вы можете указать недопустимое состояние ребенка.
Или вы можете работать над пользовательским ControlValueAccessor, NG_VALUE_ACCESSOR and NG_VALIDATORS

Комментарии:

1. Спасибо за ваш ответ. Это управление угловой реактивной формой.