【发布时间】:2019-08-11 02:08:30
【问题描述】:
我正在使用 DevExtreme 组件,这是在 html 中调用回调函数的地方:
<dxi-validation-rule type="custom"
[validationCallback]="validationCallback"
message="Email exists">
</dxi-validation-rule>
在ts文件中:
validationCallback (e) {
const x = this.userService.getUserByEmail(e.value);
x.subscribe(ref => ref.email != null ? true : false);
return x;
}
服务代码:
getUserByEmail(email: string): Observable<User> {
return this.afs
.collection<User>('users', ref => ref.where('email', '==', email))
.snapshotChanges()
.map(
users => {
const user = users[0];
if (user) {
const data = user.payload.doc.data() as User;
const id = user.payload.doc.id;
console.log('found: ' + data.email);
return { id, ...data };
} else {
return null;
}
}
);
}
该代码的问题是我得到了:
Cannot read property 'getUserByEmail' of undefined
基本上意味着我正在尝试访问超出函数范围的this.userService。在这种情况下,我如何能够访问外部函数来验证电子邮件?
【问题讨论】:
-
发布您的服务代码
-
如何将服务注入组件?
-
使用构造函数,
constructor(private userService: UserService){ } -
尝试将
validationCallback定义为箭头函数:validationCallback = (e) => { ... }。
标签: angular rxjs angular2-services