订阅不是函数错误

时间:2017-08-15 17:16:34

标签: angular angular-services angular-observable

我正在尝试从服务订阅一个observable,它构建没有错误,但是我收到了错误" this.service.getBanners(...)。subscribe不是一个函数"在浏览器中查看时。

服务:

delegate :company, to: :employee

组件:

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';

@Injectable()

export class BannerService {

    banners: any = ['1','2','3'];

    constructor(
    ) {}

    getBanners(): Observable<any[]> {
        return this.banners;
    }

    setBanners(banners: any[]): void {
        this.banners = banners;
    }

}

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:17)

你应该返回一个observable,而不是你要返回一个数组,

getBanners(): Observable<any[]> {
    return Observable.of(this.banners);
}

答案 1 :(得分:7)

要解决的一些问题。

  1. 您声明您的函数getBanners()返回一个Observable,但您返回一个数组。所以将你的return语句改为

    return Observable.from(this.banners);

  2. 您还需要添加以下内容:

    import 'rxjs/add/observable/from'; 
    
    1. 这是不好的做法,将整个rxjs库包含在您的代码中:

      import { Observable } from 'rxjs';

    2. 仅导入您需要的内容。用

      替换上面的内容
      import { Observable } from 'rxjs/Observable';