另一个“上下文”问题。
我有一个名为“ isInDatabase()”的功能。它应该是一个自定义验证器,我在“ angular / validator” Github页面上得到了启发。
如您所见,我正在调用“ this.clientService.checkElement ”功能。正如声明的那样,我收到错误消息:“无法读取未定义的属性'checkElement'。”
提示1((?)
根据我已经看到和阅读的内容,即使我使用箭头功能,上下文也已更改,因为此箭头功能包装在另一个功能中。
提示2:(?)
我尝试实现此功能:constructor (private clientService: ClientService) {}
,但随后的错误是:错误TS2339:属性'clientService'在'typeof CustomValidators'类型上不存在。
这是代码:
export class CustomValidators {
private static clientService: ClientService;
static isInDatabase(elementType: string): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
this.clientService.checkElement(control.value, elementType)
.subscribe(() => {
return {isInDB: true};
},
(error) => {
return {isInDB: true};
});
return (null);
};
}
}
答案 0 :(得分:1)
您无法从静态方法访问this
,因为this
引用了 this 类的实例,并且您在静态方法中没有实例。
这篇文章也是一本不错的书,可以更好地理解'this' in TypeScript。