我在我的异步验证器中添加了一个debounce,在SO和Github上有像这样的解决方案(https://github.com/angular/angular/issues/13200)。
我遇到的问题是,如果表单在创建所有解决方案时已经有值,我发现它不起作用。
如果该字段为空,则该字段有效:
return control
.valueChanges
.debounceTime(400)
.take(1)
.distinctUntilChanged()
.switchMap(value => this.systemService.getInstances({ name: value }))
.map((data) => {
if (CHECKISTRUE)) {
return { nameAlreadyExists: true };
} else {
return null;
}
});
如果有初始值,则control.valueChange未定义。 我尝试修复此问题的是:
if (!control.valueChanges) {
return Observable.of(null);
}
遗憾的是,状态保持待定状态。
所有谷歌搜索结果都会导致空字段的解决方案无效。