首页 > 解决方案 > 如何使用异步验证器测试 Angular 4 字段验证

问题描述

如何使用异步验证器测试表单?您能否提供代码示例。我正在使用下面的测试测试下面具有异步验证器的电子邮件字段

email: ['', Validators.compose([                        Validators.composeAsync([                                                           emailValidator.validateEmail.bind(this)])]
                });


it('email field invalid because of domain', fakeAsync(() => {        
            const hostElement = fixture.nativeElement;
            const emailInput: HTMLInputElement = hostElement.querySelector('#email');
            emailInput.value = 'user@yahoo.com';
            emailInput.dispatchEvent(new Event('input'));

            fixture.detectChanges();
            const email = component.email;

            console.log('valid : ' + email.valid); //false
            console.log('errors : ' + JSON.stringify(email.errors)); // null
    });

异步验证器返回 observable 并在控制台中打印出正确的值,指示错误,但电子邮件没有错误,即使它是无效的。

我错过了什么?谢谢你

标签: validationasynchronous

解决方案


推荐阅读