角度异步验证器去抖动输入

时间:2019-03-16 00:44:49

标签: angular forms validation rxjs observable

我想为我的角度表单组编写一个自定义的异步验证器,该步骤是检查URL是否可访问。但是,如果我对从AbstractControl更改的值进行去抖动,则Control总是以某种方式无效。 到目前为止,这是我的代码

networkx.margulis_gabber_galil_graph(3)

当前的去抖时间呼叫没有任何作用

预先感谢

2 个答案:

答案 0 :(得分:0)

您可能必须在验证器之外进行反跳。如果输入源不断发出信号,验证器将连续被调用,并在http调用不执行任何操作后将反跳操作放进去。

export class UrlValidator {
static controlValue=new Subject()
static createValidator(http: HttpClient) {
    UrlValiator.controlValue.next(control.value)
    return (control: AbstractControl) => {
        return controlValue.pipe(
            debounceTime(1500),
            switchMap(()=>http(url))
            catchError(err => {
                console.log('err', err);
                if (err.status && err.status === 200) return of(null);
                return of({ input: 'urlError' });
            })
        );
    };
}
}

答案 1 :(得分:0)

好的,问题是,Observable卡在了挂起状态。 在http observable中添加[IndexerName("Chars")] public extern char this[int index] { [SecuritySafeCritical, __DynamicallyInvokable, MethodImpl(MethodImplOptions.InternalCall)] get; } 可以达到目的