我有设置反应形式验证如下:角表单验证 - 值必须是不同的初始值
ngOnInit(): void {
this.userForm = this.formBuilder.group({
status: {checked: this.selectedUser.status == 1},
username: [this.selectedUser.username, [Validators.required, Validators.minLength(LlqaConstants.USERNAME_MIN_LENGTH)]],
realname: [this.selectedUser.realname, [Validators.required, Validators.minLength(LlqaConstants.REALNAME_MIN_LENGTH)]],
password: ['', this.selectedUser.passhash.length > 0 ? [Validators.required, Validators.minLength(LlqaConstants.PASSWORD_MIN_LENGTH)] : null],
usercomment: [this.selectedUser.comment]
});
}
我想使提交按钮,只要一个输入值不再等于初始值。我能找到的最简单方法是:
disableSaveButton(): boolean {
return !this.userform.dirty || this.userForm.invalid;
}
我的问题与dirty
财产IST,只要我进入的东西,dirty
是真实的,另外,如果我输入相同的值作为初始值。我想有一个属性告诉我,如果一个输入值不等于初始值。这可能是开箱即用的,还是我必须检查每个userForm.value
等于this.selectedUser.someValue
?
我已经在'this.selectedUser.someValue'的初始值。我的问题是,如果有一个更明确的“脏”属性,它会检查这个开箱即用。对不起,如果这不明确。 – RagnarLothbrok
你可以尝试使用'pristine'。如果用户没有更改UI中的值,则“pristine”将为“true”。它的对面是'脏'。所以如果你用默认值实例化你的表单组,并且在UI中还没有被修改过,我相信它会随着这些初始值被“原始”。如果表单在UI中发生变化,它就不应该是'原始'。 'pristine'的 – Lansana
和'dirty'的问题一样。例如,如果您添加了一个字母,并再次将其删除,虽然输入值和初始值相同,但“dirty”仍然为true,而“pristine”为false。我用自定义验证器解决了这个问题。 – RagnarLothbrok