我在离子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();
};
}
任何人都可以帮忙......
答案 0 :(得分:1)
在您的构造函数中,您订阅了一个Observable,因此您从Observable 收到的数据不是可观察的。换句话说,变量 K 不是可观察的。因此,您需要从 dataList 中删除 Observable 。 以下是您需要更改的代码
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
如果您想要返回一个Observable,您需要订阅一个Subject。以下是有关Observable vs Subject
的更多信息