私はユーザー名、パスワード、および確認パスワードフィールドを持つフォームを持っています。検証ツールモデル駆動型(反応型)フォーム
- パスワードは、ユーザ名に
パスワードが含まれており、同じ「パスワード」
export class ValidationService { static getValidatorErrorMessage(validatorName: string, validatorValue?: any) { let config = { 'required': 'Required', 'invalidPasswordUser': 'Invalid password. Password must not contain the username!', 'passwordMismatch':'Password mismatch ', 'minlength': `Minimum length ${validatorValue.requiredLength}`, 'maxlength': `Maximun length ${validatorValue.requiredLength}` }; return config[validatorName]; } static passwordMatchValidator(control) { if (control.value) { if (control.value === control.parent.value.password) { return null; } else{ return { 'passwordMismatch': true}; } }
を含んでいなければならないパスワードフィールドを確認してはいけません。私はこの2つのチェックsが持っているこの検証サービスを使用しています}
静的usernameCheckValidator(コントロール){
場合、私は、ユーザー名の前に書くとパスワードの後に、それは正しい方法で作業する場合は、最初のチェックについてif (control.value) { if (!control.value.toUpperCase().includes(control.parent.value.username.toUpperCase())) { return null; } else{ return { 'invalidPasswordUser': true}; } }
this.userForm = this.formBuilder.group({ 'username': ['',[ Validators.required,Validators.minLength(4),Validators.maxLength(20)]], 'password': ['', [Validators.required,Validators.minLength(6),ValidationService.usernameCheckValidator,Validators.maxLength(20)]], 'confirm': ['', [Validators.required,ValidationService.passwordMatchValidator,Validators.maxLength(20)]], 'profile': ['', [Validators.required]], });
:0
}}
は、これは形式ですパスワードが正しくない(ユーザー名が含まれているため)、メッセージが表示されます。代わりに、ユーザー名を変更する(パスワードを書き込む)場合、パスワードメッセージは表示されません。 同じ動作に2番目のチェックがあります。ですから、現時点では、私は「片道」バリデーターのようなものを持っています。 どこに問題がありますか?