javascript - 如何验证包含对象的输入字段
问题描述
如何检查所需的输入字段是否为空,formControl 无法读取对象...
public discountParamsForm = new FormGroup({
name: new FormControl('', Validators.required),
type: new FormControl('', Validators.required),
status: new FormControl('', Validators.required),
value: new FormControl('', [Validators.required, Validators.pattern(/^([0-9]{1,2}){1}(\.[0-9]{1,2})?$/),
Validators.min(1), Validators.max(100)]),
dateInput: new FormControl('', Validators.required),
categorySelect: new FormControl('', Validators.required)
});
<input formControlName="dateInput" fullWidth type="text" [(ngModel)]="dateRange"
nbInput placeholder="{{pickDateUI}}" [nbDatepicker]="datepicker">
<nb-rangepicker (rangeChange)="onDateChange($event)" format="yyyy-MM-dd" #datepicker></nb-rangepicker>
解决方案
永远,永远不要在同一个标签中[(ngModel)]
使用formControlName
好吧,使用自定义 Validator。
discountParamsForm = new FormGroup({
...
dateInput: new FormControl('', this.validatorRange()),
})
validatorRange(){
return (control:AbstractControl)=>{
if (!control.value.start)
return {error:'start date is mandatory'}
if (!control.value.end)
return {error:'end date is mandatory'}
}
}
看到控件始终是具有属性“start”和“end”的对象-因此始终具有值,因此在自定义验证器中我们检查此属性是否具有值-
推荐阅读
- css - 我如何为 javafx 表格列单元格应用 css
- fortran - 英特尔编译器返回“预期语句结束时找到 Format_element”
- javascript - 为什么 JS map() 返回 TypeError?
- dart - 渡槽和内存数据库
- django - 错误:无效命令“bdist_wheel”
- android - 当子元素展开/折叠时,Android RecyclerView 滚动到顶部
- java - 如何将这些 spring security xml 配置转换为 java 配置
- python-2.7 - 将值分配给组合框时出错(python 2.7)
- javascript - 用 JavaScript 构造 Json 表
- angularjs - Angular 1.6 ng-重复