angular - 无法在 combineLatest 上进行管道传输
问题描述
我正在尝试遵循此示例,但在使用时遇到了问题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]) => {}
);
}
}
items$
并且emails$
都是 Observables。此代码几乎反映了上面示例中的代码,为什么会出现此错误?
解决方案
假设您使用的是 RxJS 6+ 版本,根据迁移文档:
combineLatest
fromrxjs/operators
已被弃用。您现在应该直接导入该方法:import { combineLatest } from 'rxjs';
新版本的
combineLatest()
接受一个数组Observables
作为它的参数:combineLatest([this.items$, this.emails$]).subscribe(([items, emails]) => {});
推荐阅读
- iphone - 仅在特定设备上安装 iOS ipa
- laravel - Laravel 尝试排队作业,触发新尝试的正确方法?
- java - 如何使用 Rest Assured-Java 为 JSON 正文中的参数赋值
- c# - 线程完成后捕获异常
- javascript - 如何计算代码镜像中未保存的更改
- spring - 使用 spring kafka 中的注释为每个主题单独的 Kafka 侦听器
- lucene - 无法在数据狗日志中搜索 $
- java - isEmpty() 如何在幕后工作
- composer-php - 如何更新 phpunit 6 和代码覆盖率 5
- email - 如何将营销电子邮件发送到 Gmail 而不会成为垃圾邮件?