Я хочу передать значение флажка как Y, если оно отмечено, и значения как N, если флажок не установлен. это мой код флажка в html файле
<div class = "col-sm-12">
<label style = "padding-left: 6px;">Status:</label>
<span style = "padding-left: 10px;"></span>
<input type = "checkbox"
formControlName = "Status" style = "margin-left: 10px;"
[ngClass] = "{ 'is-invalid': submitted && addTermForm.controls.Status.errors }">
<div *ngIf = "submitted && addTermForm.controls.Status.errors" class = "text-danger">
<div *ngIf = "addTermForm.controls.Status.errors">
Status is required
</div>
</div>
</div>
это моя проверка файла ts
ngOnInit(): void {
this.termEditForm();
this.addTermForm = this.formBuilder.group({
RuleName: ['', [Validators.required, Validators.pattern('[a-zA-Z# ]*')]],
// Dealer_Id: ['', [Validators.required, Validators.pattern('[0-9]*')]],
Type: ['', [Validators.required]],
Status: ['', [Validators.required]],
});
}
Ага. я пробовал, но получаю ошибку (не работает в моем коде). Не могли бы вы уточнить ваше объяснение?
Ставлю ответ. Идея та же: FormControl существует, потому что вы объявляете его в .ts, он не зависит от .html. Вы используете «некоторые» в html, чтобы изменить значение
// replace your
<input type = "checkbox" formControName = "Status"...>
//by
<input type = "checkBox"
[ngModel] = "addTermForm.get('Status').value=='Y'?true:false"
(ngModelChange) = "addTermForm.get('Status').setValue($event?'Y':'N')"
[ngModelOptions] = "{standalone:true}"
[ngClass] = "{'is-invalid': submitted && addTermForm.get('Status').errors}">
Как вы видите, все «переменные», которые вы обычно используете в флажке ввода, используя [(ngModel)] используют значения addTermForm.get('Status')
Я попробовал это. Но значение статуса сохраняется как нулевое. Не знаю, почему? нам нужно привязать ngmodel к проверке в файле ts?
Я сделал стекблиц: stackblitz.com/edit/…. Смотрите, что нет необходимости привязывать ngModel к проверке. Ошибка выдается formControl. Кстати, «Validators.required» ничего не делают в статусе, «Y» или «N» не дают ошибок, вы можете создать пользовательскую ошибку - я сделал ее в stackblitz-
используйте [ngModel] и (ngModelChange) stackoverflow.com/questions/59910767/…. Да, вы можете использовать [(ngModel)] внутри formGroup, и это указано в этой ситуации.