我正在从Firebase获取用户数据。我想将这些数据放置到我的单个表单控件中。当我尝试将它们放置在窗体控件中时,这给我一个错误。我正在使用反应形式的形式。加载组件时如何将这些数据放置在单个表单字段中。请在下面找到我的代码。
ngOnInit() {
this.setDefault();
}
setDefault() {
let contact = {
name: "",
email: "",
phonenumber: "",
dob: "",
address: "",
state: "",
city: "",
pincode: "",
};
firebase.auth().onAuthStateChanged(user => {
if (user) {
console.log(user.email);
console.log(user.displayName);
console.log(user.photoURL);
firebase
.firestore()
.collection("profiles")
.doc(user.uid)
.get()
.then(doc => {
if (doc.data()) {
console.log(doc.data().phonenumber);
console.log(doc.data().dateofbirth);
console.log(doc.data().fulladdress);
console.log(doc.data().state);
console.log(doc.data().city);
console.log(doc.data().zipcode);
}
})
.catch(error => {
console.log("Error getting document:", error);
});
}
});
this.profileForm.setValue(contact);
}
}
答案 0 :(得分:1)
我认为您想做的是使用联系人对象来设置表单值, 如果是这样,则您未设置联系人对象(或在其中缺少行)。
let contact = {
name: user.displayName,
email: user.email,
phonenumber: doc.data().phonenumber
dob: doc.data().dateofbirth,
address: doc.data().fulladdress,
state: doc.data().state,
city: doc.data().city,
pincode: doc.data().zipcode,
};
this.profileForm.patchValue(contact);
答案 1 :(得分:0)
您可以使用patchValue
firebase.auth().onAuthStateChanged(user => {
if (user) {
console.log(user.email);
console.log(user.displayName);
console.log(user.photoURL);
firebase
.firestore()
.collection("profiles")
.doc(user.uid)
.get()
.then(doc => {
if (doc.data()) {
console.log(doc.data().phonenumber);
console.log(doc.data().dateofbirth);
console.log(doc.data().fulladdress);
console.log(doc.data().state);
console.log(doc.data().city);
console.log(doc.data().zipcode);
}
})
.catch(error => {
console.log("Error getting document:", error);
});
}
});
this.profileForm.patchValue(contact);
}