【发布时间】:2018-09-08 14:01:39
【问题描述】:
我的输入字段中有一个 required 类型和 maxLength 的验证器,我正在尝试在我的 HTML 中使用最简洁的代码。我尝试执行以下操作但无法正常工作
HTML
(这行不通)
<form [formGroup]="creditCardForm">
<input type="text" pInputText formControlName="cardHolderName" required maxlength #cardHolderName/>
<label *ngIf="form.cardHolderName.invalid &&
(form.cardHolderName.dirty || form.cardHolderName.touched)" class="invalidField">Cardholder name is required</label>
</form>
TS
form = this.buildCreditCardForm(this.fb).controls;
.
.
buildCreditCardForm(fb: FormBuilder): FormGroup {
return fb.group({
cardHolderName: ['', [Validators.required, Validators.maxLength(50)]],
.
.
}
HTML(这行得通,但它太长了,很脏)
<form [formGroup]="creditCardForm">
<input type="text" pInputText formControlName="cardHolderName" required maxlength #cardHolderName/>
<label *ngIf="fcreditCardForm.controls.cardHolderName.invalid &&
(creditCardForm.controls.cardHolderName.dirty || creditCardForm.controls.cardHolderName.touched)" class="invalidField">Cardholder
name is required</label>
</form>
【问题讨论】:
-
虽然第二种方式是只要你感觉,你就可以只用它。第一个将通过错误。
-
@RohitSharma 它没有给我一个错误。只是没有任何反应。您对如何使我的代码更清洁还有其他想法吗?我什至尝试使用一个返回布尔值的方法并在 ngIf 中使用它,并且该方法中的 if 语句是我目前在 ngIf 中使用的
-
您应该检查您的控制台是否有错误,可能是无法读取未定义的属性cardHolderName。
-
尝试记录您的表单,您将看到没有
cardHolderName属性。所以你不能通过form.cardHolderName访问它。下一个方法是正确的,我认为它不脏。
标签: angular angular6 angular-validation