如何在.subscribe 中调用方法?
How to call method inside .subscribe?
我正在试用 Angular8 和 Google Firestore。当成员是经过身份验证的用户时,我想添加一些关于 "member" 的附加信息。但是,我只喜欢在成员文档不存在时这样做。为此,我使用了附加的代码。问题是无法从我希望调用它的地方调用 addMember 方法(请参阅附加代码)。这给出了这个错误:"ERROR TypeError: this.addMember is not a function".
如果将 addMember 放在“.subscribe(function (doc) {”的 "outside" 中,则可以毫无问题地调用它。
这是为什么?任何关于解决这个问题的建议都会得到应用。
createMember() {
alert(this.member.email);
var docRef = this.db.collection("member").doc(this.member.orgId + '_' + this.member.email);
docRef.get().subscribe(function (doc) {
if (doc.exists) {
console.log("Document data: ", doc.data());
} else {
this.addMember();
//console.log('No such document! -> Add Member');
// doc.data() will be undefined in this case
}
});
}
addMember(){
this.userService.addMember(this.member)
.then(res => {
alert('Success!');
});
}
您可以使用参数,例如self
let self = this;
docRef.get().subscribe(function (doc) {
if (doc.exists) {
console.log("Document data: ", doc.data());
} else {
self.addMember();
//console.log('No such document! -> Add Member');
// doc.data() will be undefined in this case
}
});
我正在试用 Angular8 和 Google Firestore。当成员是经过身份验证的用户时,我想添加一些关于 "member" 的附加信息。但是,我只喜欢在成员文档不存在时这样做。为此,我使用了附加的代码。问题是无法从我希望调用它的地方调用 addMember 方法(请参阅附加代码)。这给出了这个错误:"ERROR TypeError: this.addMember is not a function".
如果将 addMember 放在“.subscribe(function (doc) {”的 "outside" 中,则可以毫无问题地调用它。
这是为什么?任何关于解决这个问题的建议都会得到应用。
createMember() {
alert(this.member.email);
var docRef = this.db.collection("member").doc(this.member.orgId + '_' + this.member.email);
docRef.get().subscribe(function (doc) {
if (doc.exists) {
console.log("Document data: ", doc.data());
} else {
this.addMember();
//console.log('No such document! -> Add Member');
// doc.data() will be undefined in this case
}
});
}
addMember(){
this.userService.addMember(this.member)
.then(res => {
alert('Success!');
});
}
您可以使用参数,例如self
let self = this;
docRef.get().subscribe(function (doc) {
if (doc.exists) {
console.log("Document data: ", doc.data());
} else {
self.addMember();
//console.log('No such document! -> Add Member');
// doc.data() will be undefined in this case
}
});