angular - 如何在 Angular 5 中正确启用提交按钮?
问题描述
我有模板中的当前表格:
<form #tripForm='ngForm' (ngSubmit)="addTrip(tripForm)" novalidate>
<input type="text" class="form-control" placeholder="" id="new_trpo_name" name="new_trip_name"
[ngModelOptions]="{ updateOn: 'blur' }" new_trip_name
required minlength="3" ngModel #new_trip_name="ngModel">
<div *ngIf="new_trip_name.errors && (new_trip_name.dirty || new_trip_name.touched)">
<div class="error_message" *ngIf="new_trip_name.errors.required">
<span class="e_arrow"></span>
<i>Please enter trip name</i>
</div>
</div>
<div class="error_message" *ngIf="new_trip_name.errors.minlength">
<span class="e_arrow"></span>
<i>Trip name require minimum of {{ new_trip_name.errors.minlength.requiredLength }} characters</i>
</div>
<div class="form-group">
<button class="btn btn-md btn-default trip_submit" [disabled]="!tripForm.valid">Add Trip</button>
</div>
</form>
从现场模糊时,验证消息正确显示。但是提交按钮被禁用。如果用户在输入中输入了一个有效值并将鼠标移动到提交按钮上,他就无法按下该按钮。知道我应该更改/添加什么以使其正常工作吗?谢谢。
解决方案
我所做的是从输入标签中删除 ngModelOptions 并直接将 onblur 添加到 FormControl 中,如下所示:
ngOnInit() {
this.nameForm = new FormGroup ({
firstname: new FormControl('', {
validators: Validators.required,
asyncValidators: [yourAsyncValidatorFunction],
updateOn: 'blur'
}),
lastname: new FormControl('', {
validators: Validators.required,
asyncValidators: [yourAsyncValidatorFunction],
updateOn: 'blur'
})
});
}
它仍然不是 100%,但至少它允许用户在显示消息之前完成输入。现在唯一的问题是,当用户在字段中并且具有无效值时,只要将鼠标移到按钮上,该按钮就会启用并仅在实际单击后才变为禁用状态(在这种情况下也会显示错误消息)。
推荐阅读
- javascript - 父元素和子元素的单独 onClick 事件
- android - 安卓条码扫描模块
- java - Keycloak java更改临时密码
- python - 如何使用 argparse Python 在 SQL 查询中传递日期范围参数
- c# - UdpClient 构造函数抛出 SocketException NotInitialized
- python - 如何将此语法错误转换为正确的 if else
- php - xero API:努力添加基本发票
- reactjs - 如何在反应材料-ui DataGrid中格式化单元格
- c# - 如何在子元素中绑定属性?
- python - 如何使用python找到它们之间有空格的大写字母字符