5

我試圖用密碼值確認密碼。我按照異步驗證器標準完成了。但我想知道它不起作用,並拋出以下錯誤。請告訴任何人如何解決這個錯誤。異步驗證器拋出預期驗證器以返回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;   
} 

回答

8

錯誤本身就說明:

預期驗證返回承諾或觀察到。

您在function中返回object|null

只是將其更改爲:

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

STABKBLITZ DEMO