【问题标题】:Angularfire2 - Assign a Observable to a FirebaseObjectObservable?Angularfire2 - 将 Observable 分配给 Firebase Object Observable?
【发布时间】:2017-03-11 06:12:43
【问题描述】:

如何将 Observable 分配给 FirebaseObjectObservable?

目前我收到以下错误

Type '{}' is not assignable to type 'FirebaseObjectObservable<UserProfile[]>'.                                                                                                  
  Property '_ref' is missing in type '{}'. 

方法getUserProfile

 getUserProfile() {
    const getUser = new Subject();
    this.getUser().subscribe(
        authResp => {
          console.log('response received from getUser():', authResp);
          const data = this.af.database.object(`users/${authResp}`);
          getUser.next(data);
          getUser.complete();
        },
        err => {
          getUser.error(err);
          getUser.complete();
        }
      )
     return getUser.asObservable();
   }

组件

export class HomeComponent implements OnInit, OnDestroy {
  private sub: Subscription;
  theUserProfile: FirebaseObjectObservable<UserProfile[]>;

  constructor(private authService:AuthService, private af: AngularFire, private auth: FirebaseAuth) {}

   ngOnInit() {
   this.sub = this.authService.getUserProfile().subscribe( data => {
      console.log('this is data:', data);
      this.theUserProfile = data;
   })
  }

  ngOnDestroy() {
    this.sub.unsubscribe();
  }
}

问题是:如何将数据的输出分配给 this.theUserProfile? console.log('这是数据:', data);回馈this is data: FirebaseObjectObservable {_isScalar: false, _ref: U}

【问题讨论】:

  • 你试过铸造吗?在调用您的 autService 之前添加 &lt;FirebaseObjectObservable&lt;UserProfile[]&gt;&gt;,如下所示:this.sub = &lt;FirebaseObjectObservable&lt;UserProfile[]&gt;&gt; this.authService.getUserProfile().subscribe()
  • 嗨法比奥。感谢您的回答。我已经尝试了您的示例代码,但没有任何运气。但你把我引向了正确的方向。我在下面添加了答案

标签: angular typescript firebase firebase-realtime-database angularfire2


【解决方案1】:

感谢 Fabio 的建议,我能够回答自己的问题。

需要在我的组件中更改以下内容。

export class HomeComponent implements OnInit, OnDestroy {
  private sub: Subscription;
  theUserProfile;

  constructor(private authService:AuthService, private af: AngularFire, private auth: FirebaseAuth) {}

   ngOnInit() {
   this.sub = this.authService.getUserProfile().subscribe( data => {
      console.log('this is data:', data);
      this.theUserProfile = <FirebaseObjectObservable<UserProfile[]>>data;
   })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2018-11-02
    相关资源
    最近更新 更多