带数据短划线属性的Angular 2表单字段验证
Angular 2 form field validation with data dash attribute
我正在尝试在Angular 2中进行表单验证。现在我有一个添加产品表单,它将产品添加到特定商店的库存中。我想验证产品的价格是否高于产品的批发价格,所以我添加了批发价格作为data-*
属性。我不知道如何使用Angular 2的NgControl引用该属性。这是我的代码:
...
<div class="four wide field">
<label>Wholesale Price</label>
<div class="ui left icon input">
<input type="text" disabled [(ngModel)]="wholesalePrice" ngControl="wholesale" />
<i class="dollar icon"></i>
</div>
</div>
<div class="four wide field">
<label>Price</label>
<div class="ui left icon input">
<input type="text" [(ngModel)]="retailPrice" [attr.data-wholesale]="wholesalePrice" ngControl="price" required />
<i class="dollar icon"></i>
</div>
</div>
...
...
constructor(private fb: FormBuilder) {
this.form = fb.group({
price: ['price', Validators.compose([
Validators.required,
this.validator_moreThanWholesale
])],
quantity: ['quantity']
});
}
...
我会为您的表单创建一个全局验证器:
this.form = fb.group({
price: ['price', Validators.compose([
Validators.required
])],
quantity: ['quantity']
}, {
validator: this.validator_moreThanWholesale
}));
validator_moreThanWholesale
方法将所有控件作为输入,因此您可以检查:
validator_moreThanWholesale(group: ControlGroup) {
var wholesale = group.controls.wholesale.value;
var price = group.controls.price.value;
return (price < wholesale) ? { moreThanWholesale: true } : null
}
有关更多详细信息,请参阅此问题:
- 验证器与表单中的其他值相同
相关文章:
- 如何在 ng 重复中访问 Angular 表单上的$valid
- 关于Angular表单验证的问题
- Angular:表单和复选框问题上的$setPristine
- 来自angular表单的$http.post未发送任何数据
- 合并指令'将功能转换为Angular表单验证
- 为什么Angular表单要重新加载页面?
- Angular表单不通过post提交
- Angular表单验证不起作用
- Angular表单验证,保存按钮总是禁用的
- Angular表单验证中的奇怪行为
- 向php文件提交angular表单
- 从javascript中更新angular表单
- 使用ng-switch的Angular表单
- Angular表单验证- Angular中的$invalid属性
- Angular -表单控件ngPattern来检查字母和数字
- angular表单对象是否提供了一种获取相关DOM节点的方法?
- Angular表单提交
- Angular表单不会提交
- 如何在Angular表单上设置自定义验证?
- Angular表单绑定到作用域的麻烦