#angular #validation #ngmodel
#angular #проверка #ngmodel
Вопрос:
Моя таблица sql состоит из четырех столбцов. я пытаюсь проверить форму и добавить запись с помощью службы api, и код выглядит следующим образом. я не хочу проверять флажок статуса. Я хочу отправлять значение флажка только как «Y», если установлен флажок, и «N», если флажок снят.
В то время как в текущем коде мое значение статуса будет null…do нам нужно связать ngmodel статуса с проверкой???
HTML-файл
<form [formGroup]="addTermForm" (ngSubmit)="onSubmit()">
<div>
<label style="padding-left: 15px;">Status:</label>
<span style="padding-left: 10px;"></span>
<input type="checkBox" ngModel
[ngModel]="addTermForm.get('Status').value=='Y'?true:false"
(ngModelChange)="addTermForm.get('Status').setValue($event?'Y':'N')"
[ngModelOptions]="{standalone:true}"
[ngClass]="{'is-invalid': submitted amp;amp; addTermForm.get('Status').errors}">
<div *ngIf="submitted amp;amp;amp;amp; addTermForm.controls.status.errors" class="text-danger">
<div *ngIf="addTermForm.controls.status.errors">
Status is required
</div>
</div>
</div>
<br>
<br>
</form>
Комментарии:
1. какое значение вы получаете в этой строке
console.log(this.addTermForm.value);
2. Это значение: dealer_id: «» имя правила: «uuuuuuu» тип: «S»
3. Значение состояния Y или N Не отображается в console.log (this.addTermForm.value);
Ответ №1:
Вы добавляете formControlName
, formGroup
но не присваиваете никакого значения в представлении.
Хотя у вас есть NgModel
поле, но вы не используете его при выполнении вызова API, и рекомендуется использовать два разных подхода к форме.
Поэтому попробуйте изменить поле флажка, как показано ниже
В представлении:
<input type="checkbox" formControlName="Status"
(change)="statusValueChange($event)"
[ngClass]="{'is-invalid': submitted amp;amp; addTermForm.get('Status').errors}">
В шаблоне:
private statusValueChange($event: any) {
this.addTermForm.controls['status'].setValue($event.target.checked ? 'Y' : 'N');
}
Счастливого кодирования .. 🙂