Angular 订阅不是一个函数错误
我试图订阅一个服务中的可观察对象,它构建时没有错误,但在浏览器中查看时出现错误“this.service.getBanners(…).subscribe不是函数” 服务:Angular 订阅不是一个函数错误,angular,angular-services,angular-observable,Angular,Angular Services,Angular Observable,我试图订阅一个服务中的可观察对象,它构建时没有错误,但在浏览器中查看时出现错误“this.service.getBanners(…).subscribe不是函数” 服务: import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; @Injectable() export class BannerService { banners: any = ['1','2','3'];
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;
}
}
你知道我做错了什么吗?你应该返回一个可观察的,而不是返回一个数组:
有几件事需要解决
returnobservable.from(this.banner)代码>
import 'rxjs/add/observable/from';
从'rxjs'导入{Observable}代码>
import { Observable } from 'rxjs/Observable';
谢谢,这修复了错误。我还按照Yakov Fain在其回答中的建议更改了导入,并导入了import'rxjs/add/observable/of'。我有一个带有异步管道的*ngFor,但是当我调用setbanner并更改横幅数组的内容时,它不会更新。谢谢,我最初确实有这样的导入,但我在测试时删除了它,我已将其更改回来。出于某种原因,我在使用Observable.from时遇到了一个错误,因此我将其更改为Sajeetharan建议的Observable.of,并修复了该错误。第2点最近似乎发生了变化,请参见:。没错,我在这里写了关于RxJS 6的博客:
getBanners(): Observable<any[]> {
return of(this.banners);
}
import 'rxjs/add/observable/from';
import { Observable } from 'rxjs/Observable';