如何在角度6中将硬编码数组转换为Observable <t>

时间:2018-11-01 12:08:30

标签: arrays angular observable angular6

如何将数组转换为角度为6的可观察数组。 我试图在拥有数组的同时返回一个可观察的对象。我这样做是为了代替HTTP请求,而可以返回硬编码的数据。

我有以下界面:

export interface IProduct {
  productId: number;
  productName: string;
  productCode: string;
  releaseDate: string;
  description: string;
  price: number;
  starRating: number;
  imageUrl: string;
}

然后我有此服务:

export class ProductService {

  products: IProduct[];

  getProducts(): Observable<IProduct[]> {
    this.products = [
      {
        'productId': 2,
        'productName': 'Black cat',
        'productCode': 'GDN-001',
        'releaseDate': 'March 18, 2018',
        'description': 'Can punch peoples faces.',
        'price': 32.00,
        'starRating': 5,
        'imageUrl': 'https://placekitten.com/400/420'
      },
      {
        'productId': 3,
        'productName': 'T Cat',
        'productCode': 'GDN-002',
        'releaseDate': 'March 18, 2018',
        'description': 'Can shoot guns.',
        'price': 32.00,
        'starRating': 2.2,
        'imageUrl': 'https://placekitten.com/400/420'
      }
    ];

    //paste here how to return the array to observable

  }
}

4 个答案:

答案 0 :(得分:3)

如果您使用的是Rxjs 5或更早版本:

您可以使用

return Observable.of(this.products);

确保导入,

import { Observable } from "rxjs";

答案 1 :(得分:3)

使用of运算符

import { of } from 'rxjs';


return of(this.products);

答案 2 :(得分:2)

使用from

import { from } 'rxjs'

export class ProductService {

  products: IProduct[];

  getProducts(): Observable < IProduct[] > {
    this.products = [{...}, {...}];
    return from(this.products);
  }
}

答案 3 :(得分:0)

您可以使用of来返回Observable得到的参数of。从import { of } from 'rxjs';

导入
return of(this.products);