- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下代码:
export class EventsChainComponent {
eventSubscriber:Subscription;
constructor (protected eventService: EventService) {}
public registerComponentsEvent(event:any) {
// getOnEvent signature
// (method) EventService.getOnEvent(): Observable<FormEvent>
this.eventSubscriber = this.eventService.getOnEvent()
.pipe(filter((formEvent: FormEvent) => {return formEvent.key == event.event}))
.subscribe((formEvent: FormEvent) => {
..........
});
}
当我编译时,编译器返回以下错误:
Argument of type 'MonoTypeOperatorFunction' is not assignable to parameter of type 'OperatorFunction'.
所以,我搜索了一下,找到了 RxJs6
运算符过滤器 API:
export declare function filter<T, S extends T>(predicate: (value: T, index: number) => value is S, thisArg?: any): OperatorFunction<T, S>;
export declare function filter<T>(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction<T>;
如您所见,过滤器作为 2 个重载方法,一个返回 OperatorFunction
,另一个返回 MonoTypeOperatorFunction
。
谁能告诉我这两种类型的区别?谁知道我该如何解决这个错误?
注意:FormEvent
类是我创建的,EventService
和 EventsChainComponent
具有相同的导入,引用相同的类。
最佳答案
对于其他有此问题的人:
我遇到了同样的问题。在我的例子中,问题出在事件对象上。
rxjs 和 angular/router 都有一个事件对象,所以发生了名称冲突。我为解决这个问题所做的是用不同的名称声明 @angular/router 事件,然后相应地使用。
{Event as RouterEvent} from '@angular/router';
之后:当我想使用 rxjs.Event 时,我使用 Event
,当我想使用 @angular/router.Event 时,我使用 RouterEvent
。错误消失了:)
希望对你有帮助
关于angular - RxJs6:OperatorFunction 与 MonoTypeOperatorFunction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52594026/
我有以下代码: export class EventsChainComponent { eventSubscriber:Subscription; constructor (prote
我试图理解可观察 API 的 pipe 运算符: export declare class Observable implements Subscribable { ....... pipe
我正在尝试进行剑道聊天示例:https://www.telerik.com/kendo-angular-ui/components/conversationalui/ 我使用 Visual Studi
我正在尝试从 rxjs 5 迁移到 6,但我遇到了困难。当我尝试这个时 this._connectivity.isOnline().pipe(first()).subscribe((state) =>
我是一名优秀的程序员,十分优秀!