【发布时间】:2019-05-07 17:43:06
【问题描述】:
我正在尝试在表单中输入一些数据,但它没有给我touched 状态。因此,在向用户发送回消息时总是会发生错误。
我在我的 TS 文件中使用 FormBuilder 来存储来自 HTML 的值。无论我是否输入数据,它都会给我这个错误。
我迷路了。
错误
firstName: FormControl {validator: ƒ, asyncValidator: ƒ, _onCollectionChange:
ƒ, pristine: true, touched: false, …}
价值:
value: {firstName: "", .... }
我尝试在ngIf 条件下检查pristine,但没有。
这是我的 HTML 代码:
<form [formGroup]="formInfo" (ngSubmit)="validateForm()">
<label>First Name <input type="text" maxlength="35" />
<div *ngIf="submitted && formInfo.controls.firstName.errors" class="error">
<div *ngIf="(formInfo.controls.firstName.pristine) && (formInfo.controls.firstName.errors.required)">Your first
name is required.</div>
</div>
</label>
....
</form>
这是我的 TypeScript 代码:
// Class Attributes
formInfo: FormGroup;
submitted = false;
success = false;
constructor(private builder: FormBuilder) { }
// Form data as an object
ngOnInit() {
this.formInfo = this.builder.group({
firstName: ['', Validators.required],
....
});
}
// Validates the form
validateForm() {
this.submitted = true;
console.log(this);
console.log(this.formInfo);
if (this.formInfo.invalid) {
return;
}
this.success = true;
}
}
我只是想让表单说,如果用户没有,你需要输入一个值。否则不会有错误提示。
我添加了以下代码来查看我的 TS 文件中是否有偶数值。
<form [formGroup]="formInfo" (ngSubmit)="validateForm()">
<label>First Name <input type="text" maxlength="35" />
<div *ngIf="submitted && formInfo.controls.firstName.errors" class="error">
<div *ngIf="(formInfo.controls.firstName.pristine) && (formInfo.controls.firstName.errors.required)">Your first
name is required.</div>
</div>
</label>
....
</form>
<!-- I added this -->
<div *ngIf="submitted">
<strong>First Name</strong>
<span>{{ formInfo.controls.firstName.value }}</span>
</div>
该值似乎从未保存到 TS 中。
【问题讨论】:
标签: html angular typescript error-handling runtime-error