在Angular 7中,可以使用异步验证器来进行表单的变更检测。下面是一个包含代码示例的解决方法:
FormControl
的setAsyncValidators
方法来设置异步验证器。以下是一个示例:import { FormControl } from '@angular/forms';
import { Observable } from 'rxjs';
// 异步验证器
const asyncValidator = (control: FormControl): Observable => {
return new Observable((observer) => {
// 模拟异步操作,比如发送HTTP请求
setTimeout(() => {
if (control.value === 'example') {
observer.next({ invalid: true });
} else {
observer.next(null);
}
observer.complete();
}, 2000);
});
};
// 创建一个FormControl,并设置异步验证器
const myControl = new FormControl('', null, asyncValidator);
正在验证...
验证失败
验证成功
在上面的代码中,我们使用了*ngIf
指令来根据FormControl的状态来显示不同的信息。myControl.pending
表示验证是否正在进行中,myControl.errors
表示验证是否失败。
valueChanges
属性。以下是一个示例:myControl.valueChanges.subscribe((value) => {
console.log('FormControl的值:', value);
});
在上面的代码中,我们使用了valueChanges
属性来订阅FormControl的值的变化,并在控制台中打印出来。
这样,你就可以使用异步验证器进行变更检测了。当用户输入的值为'example'时,验证会失败,并显示相应的信息。当用户输入的值不是'example'时,验证会成功,并显示相应的信息。同时,你还可以在组件中获取到FormControl的值。