类型 '[]' 不可分配给 ionic 2 中的类型 'Observable<any[]>'

Posted

技术标签:

【中文标题】类型 \'[]\' 不可分配给 ionic 2 中的类型 \'Observable<any[]>\'【英文标题】:Type '[]' is not assignable to type 'Observable<any[]>' in ionic 2类型 '[]' 不可分配给 ionic 2 中的类型 'Observable<any[]>' 【发布时间】:2018-06-27 05:26:46 【问题描述】:

我在 ionic 2 工作。我正在尝试从 firebase 获取 json。我使用了 observable 但显示错误。这里是我的家。ts

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】:

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

export class HomePage 
    donorList;
 constructor(public nav: NavController, public data: MyProvider) 
    this.data.loadData().subscribe(k => 
   this.donorList = k;
);      
   

PS:

如果你想返回一个 Observable,你需要订阅一个 Subject。这里有更多关于Observable vs Subject的信息

【讨论】:

@FaisalAmdani 如果此答案有效,请将其标记为正确以帮助他人。

以上是关于类型 '[]' 不可分配给 ionic 2 中的类型 'Observable<any[]>'的主要内容,如果未能解决你的问题,请参考以下文章

PhpStorm 警告:参数类型不可分配给参数类型

错误 TS2416:“ApolloError”类型中的属性“originalError”不可分配给基类型“GraphQLError”中的相同属性

React 错误:类型“void”不可分配给 React.Component 中的类型“Readonly<>”

错误:元素不可分配给反应中的类型字符串

TS2416:“MyGuard”类型中的属性“canActivate”不可分配给基类型“CanActivate”中的相同属性

React createRef 不可分配给 React Native Actions Sheet ref prop 中的 MutableRefObject 类型