给窗体控件的角设定值给出错误

时间:2019-12-23 16:59:25

标签: angular

我正在从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);
  }
}

2 个答案:

答案 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);
      }