输入&#39; {} []&#39;不能分配给&#39; Observable <any []>&#39;在离子2

时间:2018-01-18 07:51:53

标签: angular typescript ionic2 observable

我在离子2工作。我正试图从firebase获得json。我使用了observable但显示错误。这是我的家。

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { DetailsPage} from'../details/details';
import { MyProvider } from '../../providers/my/my';
import  'rxjs/Rx';
import {Observable} from 'rxjs/Observable';
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
    donorList: Observable<any[]>;
 constructor(public nav: NavController, public data: MyProvider) {
    this.data.loadData().subscribe(k => {
   this.donorList = k;
});      
   }

}

我的json文件是

{
    "s2pDonors": [{
            "name": "Dinesh",
            "bldgrp": "o+",
            "city": "Nagpur"

        }, {
            "name": "Dinesh",
            "bldgrp": "o+",
            "city": "Nagpur"
        },
        {
            "name": "Suresh",
            "bldgrp": "A+",
            "city": "Nagpur"
        },

    ]
}

在创建android .apk文件时,它向我显示以下错误

Type '{}[]' is not assignable to type 'Observable<any[]>'.

      L64:   this.data.loadData().subscribe(k => {
      L65:  this.donorList = k;
      L66:   console.log(this.donorList);

我的提供者,其中定义了loadData()函数

export class MyProvider {
    list : Array<any>;
  constructor(public afd: AngularFireDatabase) {
}
loadData()
  {
    return this.afd.list('/s2pDonors/').valueChanges();
  };
  }
任何人都可以帮忙......

1 个答案:

答案 0 :(得分:1)

在您的构造函数中,您订阅了一个Observable,因此您从Observable 收到的数据不是可观察的。换句话说,变量 K 不是可观察的。因此,您需要从 dataList 中删除 Observable 。 以下是您需要更改的代码

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

PS:

如果您想要返回一个Observable,您需要订阅一个Subject。以下是有关Observable vs Subject

的更多信息
相关问题