angular – 订阅不是函数错误

前端之家收集整理的这篇文章主要介绍了angular – 订阅不是函数错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从服务订阅一个observable,它构建没有错误,但我在浏览器中查看时得到错误“this.service.getBanners(…).subscribe不是一个函数”.

服务:

  1. import { Injectable } from '@angular/core';
  2. import { Observable } from 'rxjs';
  3.  
  4. @Injectable()
  5.  
  6. export class BannerService {
  7.  
  8. banners: any = ['1','2','3'];
  9.  
  10. constructor(
  11. ) {}
  12.  
  13. getBanners(): Observable<any[]> {
  14. return this.banners;
  15. }
  16.  
  17. setBanners(banners: any[]): void {
  18. this.banners = banners;
  19. }
  20.  
  21. }

零件:

  1. import { Component,ViewEncapsulation,OnInit } from '@angular/core';
  2. import { Observable } from 'rxjs';
  3. import { BannerService } from './../banner/banner.service';
  4.  
  5. @Component({
  6. selector: '.banner',templateUrl: './banner.component.html',styleUrls: ['./banner.component.sass'],encapsulation: ViewEncapsulation.None
  7. })
  8.  
  9. export class BannerComponent implements OnInit {
  10.  
  11. banners: any[];
  12.  
  13. constructor(private bannerService: BannerService){
  14.  
  15. }
  16.  
  17. ngOnInit() {
  18. this.bannerService.getBanners().subscribe(banners => this.banners = banners);
  19. }
  20. }

我有什么想法我做错了吗?

你应该返回一个observable,而不是你返回一个数组,
  1. getBanners(): Observable<any[]> {
  2. return Observable.of(this.banners);
  3. }

猜你在找的Angularjs相关文章