输入' {}'不能分配到'个人资料'

时间:2018-01-23 01:06:33

标签: angular typescript firebase angularfire2

我是打字稿的新手,我得到了错误

  

输入' {}'不能分配给'个人资料'。

on this.profile 我该如何解决这个问题?

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFirestore } from 'angularfire2/firestore';
import { Profile } from './../../models/profile';


@IonicPage()
@Component({
  selector: 'page-profile',
  templateUrl: 'profile.html',
})
export class ProfilePage {

    profile = {} as Profile;

    constructor(private afs: AngularFirestore, private afAuth: AngularFireAuth,
      public navCtrl: NavController, public navParams: NavParams) {
    }
    ionViewWillLoad() {
      this.afAuth.authState.take(1).subscribe(data => {
          let profileCollection = this.afs.collection('profiles').doc(`${data.uid}`).valueChanges();
          profileCollection.subscribe(profile => this.profile = profile);
      })
    }
  }

2 个答案:

答案 0 :(得分:1)

您的问题是,您的Profile类型可能具有强制属性。您只需要使它们可选或将它们初始化为默认值。您不能将空对象分配给具有属性的类型。

你可以做的只是在没有初始化的情况下说profile: Profile。您仍在执行该类型。由于您只是在订阅中分配它,因此您不需要执行{}空对象分配。

答案 1 :(得分:0)

  

类型“{}”不能分配给“个人资料”类型。

如果你想使用这样的断言,你需要使用双断言模式,即

profile = {} as any as Profile;

更多