无法在 combineLatest 上使用管道

use*_*562 4 rxjs angular

我正在尝试遵循此示例,但在使用时遇到问题combineLatest()

Property 'subscribe' does not exist on type 'OperatorFunction<unknown, [unknown, Item[], User[]]>'

这是我的门面:

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { combineLatest, distinctUntilChanged, map } from 'rxjs/operators';

export interface User {
  test: string;
}

export interface Item {
  test: string;
}

interface State {
  items: Item[];
  users: User[];
}

let _state: State = {
  items: [],
  users: [],
};

@Injectable()
export class Facade {
  private store = new BehaviorSubject<State>(_state);
  private state$ = this.store.asObservable();

  items$ = this.state$.pipe(map(state => state.items), distinctUntilChanged());
  emails$ = this.state$.pipe(map(state => state.users), distinctUntilChanged());

  constructor(private http: HttpClient) {
    combineLatest(this.items$, this.emails$).subscribe(
      ([items, users]) => {}
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

items$并且emails$都是 Observable。此代码几乎反映了上面示例中的代码,为什么会出现此错误?

And*_*ill 12

假设您使用的是 RxJS 6+ 版本,根据迁移文档

  1. combineLatestfromrxjs/operators已被弃用。您现在应该直接导入该方法:

    import { combineLatest } from 'rxjs';
    
    Run Code Online (Sandbox Code Playgroud)
  2. 的新版本combineLatest()接受一个数组Observables作为它的参数:

    combineLatest([this.items$, this.emails$]).subscribe(([items, emails]) => {});
    
    Run Code Online (Sandbox Code Playgroud)