我试图用一个自定义验证器将整个fromGroup
设置为无效,这似乎不起作用。。。
下面代码的目标是比较FromGroup的两个实例。
我的变量isValid
在我记录时工作正常。它会根据变化变为真或假。
但是我无法使from无效,我已经尝试了很多方法,比如文章和堆栈溢出,这有一个stackblitz,但它似乎也不起作用。
像this.updateCyclistForm.set错误({'无效': true});
from Angular 6只需要多个字段中的一个字段Reactive Form
我看过很多类似的帖子,其中一篇使用控件,但这里不是这样。
public updateCyclistForm: FormGroup
public savedStateOfForm: FormGroup
...
constructor(...) {
...
this.savedStateOfForm = new FormGroup({
status: new FormControl(this.currentReg.status, []),
role: new FormControl(this.currentReg.role, []),
passes: new FormControl({ data: this.passesUID }, [])
})
this.updateCyclistForm = new FormGroup({
status: new FormControl(this.currentReg.status, []),
role: new FormControl(this.currentReg.role, []),
passes: new FormControl({ data: this.passesUID }, [])
})
this.updateCyclistForm.setValidators(this.isValid(this.savedStateOfForm));
}
...
isValid = (clone: FormGroup): ValidatorFn => {
return (group: FormGroup): ValidationErrors => {
let isValid = JSON.stringify(clone.value) != JSON.stringify(control.value)
group.setErrors({ 'valid': isValid });
this.updateCyclistForm.setErrors({ 'valid': isValid });
return
}
}
HTML
<button type="submit" [disabled]="!updateCyclistForm.valid">Save</button>
按钮从未被禁用,为什么?我做错了什么?
编辑:
我还尝试使用类似于@Adam的答案。这使得我的按钮被终身禁用。
isValid = (clone: FormGroup): ValidatorFn => {
return (group: FormGroup) : ValidationErrors => {
return {
invalid: JSON.stringify(clone.value) != JSON.stringify(group.value) ? true : null
}
}
}
感谢@Adam的帮助
这就是解决方案
isValid = (clone: FormGroup) => {
return (group: FormGroup) => {
return JSON.stringify(clone.value) != JSON.stringify(group.value) ? null : { invalid: JSON.stringify(clone.value) != JSON.stringify(group.value) }
}
}
setValidators
必须接受返回ValidationErrors
(或null
)的ValidatorFn
函数
constructor() {
// ...
this.updateCyclistForm.setValidators(this.updateCyclistValidator);
}
...
updateCyclistValidator(ctrl: FormGroup) {
const valid = // run your validation uisng the values in ctrl
// if there are no errors, you MUST return null
if(valid) return null;
// return your errors, for example:
return {
role: 'choose a role'
}
}
验证器返回的错误的存在与否告诉angular您的表单是否有效。
问题内容: 我的页面上有一个表单,当我调用它时,将forms类设置为,但仍然返回true。我在这里做错了什么? 模板 零件 问题答案: 它()行为正确。您的表单需要用户名和密码,因此,当您重置表单时,该表单应该无效(即,没有用户名/密码的表单无效)。 如果我理解正确,那么这里的问题就是为什么在您第一次加载页面(表单也是无效的)时并没有出现红色错误,而是在您单击按钮时弹出了红色错误。当您使用Mate
首先,我是Vaadin7的新手。当我发现BeanFieldGroup.class时,我正在尝试一些vaadin演示。正如我所看到的,这个类将一个字段绑定到一个bean属性。在bean中,使用验证约束注释对属性进行注释(JSR303)。在本例中,我的pom.xml包含hibernate验证器依赖项: 我创建了validationmessage.properties文件,并在其中放了一些消息(带有匈牙
现在,我正在用Spring MVC开发一个web应用程序。 样品值可以是“0.05”、“1.00”、“12.55”等。 因此,如果有任何办法来解决这个问题,请点亮我。谢了。
正常情况都需要对用户输入参数进行校验,此时就会用到验证器。验证器可以验证控制器中参数,也支持验证 Websocket 参数以及 RPC 参数验证,提供默认和自定义两种类型的验证器,还可添加自定义验证规则。 安装 使用验证器前,需要安装验证器组件,安装如下: composer require swoft/validator 启用 成功安装好验证组件后,接下来需要启用验证器,这里以 Http-ser
前言 hyperf/validation 衍生于 illuminate/validation,我们对它进行了一些改造,但保持了验证规则的相同。在这里感谢一下 Laravel 开发组,实现了如此强大好用的验证器组件。 安装 引入组件包 composer require hyperf/validation 添加中间件 您需要为使用到验证器组件的 Server 在 config/autoload/mi
imi 提供了基本数据类型的验证,以及可扩展的验证方法,这一切都可以通过注解来使用。 注解 @Condition 通用验证条件,传入回调进行验证 该注解可以写在类、属性、方法上。 参数: /** * 参数名称 * 属性注解可省略 * * @var string */ public $name; /** * 非必验证,只有当值存在才验证 * * @var boolean */ p