web-dev-qa-db-ja.com

Async Validator Throw Expmiseは、PromiseまたはObservableを返すことを期待しています

パスワード値でパスワードを確認しようとしました。私は非同期バリデーター標準に従ってやった。しかし、私はそれが機能していないと思っており、次のエラーをスローします。このエラーを解決する方法を誰かに教えてください。

PromiseまたはObservableを返すためのバリデーターが必要です。

これが私のコードです。

呼び出し検証ツール:

cPass: ['', Validators.compose([
  Validators.required, 
  Validators.maxLength(32),
  Validators.minLength(10)
]),
  this.validPassword.bind(this)
]

カスタム検証機能:

validPassword(control: AbstractControl) {            
  const isEqual = Observable.of(this.password == control.value);
  return isEqual ? { valid : true } : null;         
}
10

エラーはそれ自体を物語っています:

PromiseまたはObservableを返すためのバリデーターが必要です。

functionobject|nullを返しています。

次のように変更します。

validPassword(control: AbstractControl) {
  return observableOf('12345678910' === control.value).pipe(
    map(result => result ? { invalid: true } : null)
  );
}

STABKBLITZ DEMO

17
developer033