代码之家  ›  专栏  ›  技术社区  ›  Corcor

这个服务方法不是一个函数

  •  0
  • Corcor  · 技术社区  · 4 年前

    “类型错误:this.eventsService.getEvent事件不是函数“

    组件中的代码:

    constructor(
     private eventsService: EventsService
    )
    
    this.subscriptions.add(
      this.eventsService.getEvent().subscribe(events => {
        this.events = events;
        this.soSomeMethod();
      })
    );
    // Also have a V2 method, unsure if it matters but adding it for clarity
    this.subscriptions.add(
      this.eventsService.getEventV2().subscribe(eventsV2 => {
        this.eventsV2 = eventsV2;
        this.soSomeMethod();
      })
    );
    

    这是有问题的服务:

      public getEvent(): Observable<event[]> {
        return combineLatest(this.store.select(getEventStore), this.store.select(getEvents)).pipe(
          map(state => {
            // do something 
          })
        );
      }
      public getEventV2(): Observable<event[]> {
        return combineLatest(this.store.select(getEventStore), this.store.select(getEvents)).pipe(
          map(state => {
            // do something 
          })
        );
      }
    

        { provide: EventsService, useValue: { getEvent: () => of([])}},
        { provide: EventsService, useValue: { getEventV2: () => of([])}},
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   AliF50    4 年前

    问题是使用最后一个 provider 你已经准备好了 EventsService .

    { provide: EventsService, useValue: { getEvent: () => of([]), getEventV2: () => of([]) } },
    // remove the two instances of EventsService and keep it to one.