我正在尝试遵循此示例,但在使用时遇到问题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+ 版本,根据迁移文档:
combineLatestfromrxjs/operators已被弃用。您现在应该直接导入该方法:
import { combineLatest } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)
的新版本combineLatest()接受一个数组Observables作为它的参数:
combineLatest([this.items$, this.emails$]).subscribe(([items, emails]) => {});
Run Code Online (Sandbox Code Playgroud)