我正在尝试使用外部服务验证Angular表单,但我收到cannot read property of undefined
错误。
我在我的组件中创建了一个简单的表单:
this.myForm = this.fb.group({
username: ['', [this.validator.username]],
});
从那里开始,我正在调用我的username
方法:
@Injectable()
export class ValidatorService {
constructor(private auth: AuthService) {}
username(input: FormControl): {[key: string]: any} {
return { userInvalid: this.auth.validate(input.value) };
}
}
然后,我的ValidatorService调用一个方法来检查服务器是否存在该用户名:
@Injectable()
export class AuthService {
validate(username: string): boolean {
return username !== 'demo';
}
}
我收到以下错误:Cannot read property 'auth' of undefined
。有什么想法吗?
答案 0 :(得分:1)
username
方法的执行方式与ValidationService
的方法不同,因此您可以放弃上下文this
。
Function.prototype.bind
方法可以帮助您:
username: ['', [this.validator.username.bind(this.validator)]],