首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数组转换为Observable<T[]>类型

将数组转换为Observable<T[]>类型
EN

Stack Overflow用户
提问于 2019-07-15 02:58:10
回答 3查看 11.2K关注 0票数 6

我希望将数组转换为Observable<T[]>类型,并使用了rxjs方法"from“。但是它返回Observable<T>,有办法将数组转换为Observable<T[]>吗?

代码语言:javascript
运行
复制
Player: Observable<T[]>;

convert(){
let tempArr:T[] = Object.values(data) as T[];
let Obsobj = from(tempArr);
this.Player = Obsobj;
}

这是我得到的错误消息,Observable<T>不能分配到输入Observable<T[]>

编辑

即使使用以下代码片段,返回类型也不像预期的那样。

代码语言:javascript
运行
复制
let $sub = new Subject<Array<T>>();
$sub.next(tempArr);
this.Player$ = $sub.asObservable();

因为我希望返回的可观察类型如下所示。

代码语言:javascript
运行
复制
Observable {_isScalar: false, source: Observable, operator: MapOperator}

但返回如下。

代码语言:javascript
运行
复制
Observable {_isScalar: false, source: Subject}

编辑#2

完整的代码片段。

代码语言:javascript
运行
复制
Player: Observable<B[]>;

convert(data: Dictionary<B>){
   let tempArr:B[] = Object.values(data) as B[];
   let $sub = new Subject<Array<B>>();
   $sub.next(tempArr);
   this.Player$ = $sub.asObservable();
}

这里有什么问题?有什么帮助吗?

EN

Stack Overflow用户

发布于 2019-07-15 03:15:15

这不是generics的工作方式。

您将不得不重构您的代码,以使其工作。

理想情况下,您的convert方法应该需要一个泛型T

就像这样:

代码语言:javascript
运行
复制
convert<T>(array: Array<T>): Observable<Array<T>> {
  return of(array);
}

当你打电话给convert时,你会这样称呼它:

代码语言:javascript
运行
复制
this.convert<User>([{ firstName: `John`, lastName: `Doe` }])
  .subscribe((userArray: Array<User>) => console.log(userArray));

当您这样做时,您正在告诉您的convert函数,您希望类型T是一个User类型。

下面是一个完整的工作示例:

代码语言:javascript
运行
复制
import { Component } from '@angular/core';
import { Observable, of } from 'rxjs';

interface User {
  firstName: string;
  lastName: string;
}

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  player: Observable<Array<User>>;

  ngOnInit() {
    this.convert<User>([{ firstName: `John`, lastName: `Doe` }])
      .subscribe((userArray: Array<User>) => console.log(userArray));
  }

  convert<T>(array: Array<T>): Observable<Array<T>> {
    return of(array);
  }
}
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57032772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档