【问题标题】:Type 'Observable<{}[]>' is not assignable to type 'AngularFireList<any>'类型 'Observable<{}[]>' 不可分配给类型 'AngularFireList<any>'
【发布时间】:2019-05-15 05:12:51
【问题描述】:

我正在关注tutorial 关于使用 AngularFire2。

类型 'Observable' 不可分配给类型 'AngularFireList'。 'Observable' 类型中缺少属性 'query'。

实际上在从this 看到一些参考基础之后。也尝试在repo 中做同样的事情,但仍然很不幸没有找到答案

代码如下:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';

@IonicPage()
@Component({
  selector: 'page-graph-sensor',
  templateUrl: 'graph-sensor.html',
})
export class GraphSensorPage {
  sensorData: AngularFireList<any[]>;

  constructor(public navCtrl: NavController, public navParams: NavParams, public firedb: AngularFireDatabase) {
    this.sensorData = firedb.list('/reading').valueChanges();
    console.log(JSON.stringify(firedb.list('/reading').valueChanges()));
  }

【问题讨论】:

  • 如果删除.valueChanges()会怎样?
  • 返回一个带有指向我的 firebase 链接的对象
  • 类似 {"query" : "to my firebase url" } with valuechanges 它返回一个可观察的对象

标签: angular firebase angularfire2


【解决方案1】:

valueChanges 是一个Observable,因此如果不订阅,您将无法取回JSON 数据。我假设您想查看数据?

尝试运行;

 this.sensorData: any[];


 firedb.list('/reading').valueChanges()
   .subscribe(sensorData => {
     this.sensorData = sensorData;
   });

您也不应该在constructor 中运行此逻辑。相反,您应该在ngOnInit 中加入。订阅时,您有责任取消订阅。一个简单的模式是取消订阅ngOnDestroy

import { Component, OnInit, OnDestroy } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { Subscription } from 'rxjs/Subscription';

@IonicPage()
@Component({
  selector: 'page-graph-sensor',
  templateUrl: 'graph-sensor.html',
})
export class GraphSensorPage implements OnInit {
  sensorData$: Subscription;
  sensorData: any[];

  constructor(public navCtrl: NavController, public navParams: NavParams, public firedb: AngularFireDatabase) { }

  ngOnInit() {
    this.sensorData$ = firedb.list('/reading').valueChanges()
      .subscribe(sensorData => {
        this.sensorData = sensorData;
      });
  }

  ngOnDestroy() {
    this.sensorData$.unsubscribe();
  }
}

【讨论】:

  • 抱歉回复晚了,我收到了这个错误“polyfills.js:3 Uncaught TypeError: Object(...) is not a function”我不知道为什么会这样
猜你喜欢
  • 1970-01-01
  • 2018-04-21
  • 2019-08-08
  • 2019-04-17
  • 2018-08-14
  • 2017-08-12
  • 2018-03-22
  • 2018-08-30
  • 2021-09-23
相关资源
最近更新 更多