Требуемая угловая проверка не позволяет форме действовать до тех пор, пока ввод не будет отредактирован - PullRequest
0 голосов
/ 20 мая 2018

У меня есть HTML ниже, где я реализовал обязательное свойство HTML5:

        <div class="col-sm-3">
            <label>{{question.placeholder}}<span *ngIf="question.required">*</span></label>
        </div>
        <div class="col-sm-9">
                <mat-form-field style="width:100%">
                        <input matInput [placeholder]="question.placeholder" [id]="question.key" [maxLength]="question.maxLength" [formControlName]="question.key"
                            type="email" [required]="question.required"[readonly]="question.readonly" [value]="question.value" (keyup)="checkValue($event, question)"
                            (paste)="checkPasteValue($event, question)">
                        <mat-hint align="end">{{question.value ? question.value.length : 0}} / {{question.maxLength}}</mat-hint>
                    </mat-form-field>

        </div>

Это поле электронной почты.

[обязательно] = "question.required"

Ниже находится кнопка формы, которую нужно активировать, когда форма действительна.

 <button mat-raised-button class="md-primary md-raised pull-right" color="primary" style="margin-right:10px;" *ngIf="isEditMode" [disabled]="!dataEntryForm.valid"
        (click)="updateDataEntry($event)">UPDATE</button>

кнопка не активируется до тех пор, пока ввод не заполнен, тогда как он предварительно заполнен.Так что это должно быть удовлетворено для необходимого.Так что же следует использовать в таком случае?

РЕДАКТИРОВАТЬ Форма предварительно заполняется с помощью службы:

 editSectionDataItem(item: any) {
    var me = this;
    // / var decodedItem = this.decodeDataArray([item]);
    // console.log(item, this.originalData);

    var decodedItem = this.originalData.filter(function (originalItem) {
      return originalItem.id == item.id;
    });

    console.log(decodedItem, item);
    var mission = {
      widgetConfig: this.widgetConfig,
      settings: this.settings,
      fields: this.fields,
      isEditMode: true,
      data: flattenJSON(decodedItem[0])
    }
    console.log(mission);
    this._widgetService.missionToOpenDataEntryForm(mission);


  }

1 Ответ

0 голосов
/ 23 мая 2018

Вы должны использовать [(ngModel)] вместо [value].

[(ngModel)] - это то, что дает Angular свойства проверки формы.Без этого вы не сможете отследить состояние проверки ввода (по крайней мере, в форме на основе шаблона).

Более подробную информацию об этом можно найти в Angular docs, здесь и здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...