Angular 6 router.events.filter 'filter' 在类型 'Observable<Event>' 上不存在

标签 angular typescript rxjs angular6 rxjs6

我已经完成将我的应用程序更新到 Angular 6(它是 5.2 版本)。

我在 :

中得到一个错误语法
import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
import { filter } from 'rxjs/operators';
...
constructor(private router: Router) {}

this.router.events.filter
      (event => event instanceof NavigationEnd).subscribe((res) => 
    {
      // DO something
    });

error TS2339: Property 'filter' does not exist on type 'Observable'.

Angular 6 中正确的语法是什么?

谢谢

最佳答案

这是使用 Angular 6+ 和最新的 RxJS 过滤路由器事件的方法:

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';

import { filter } from 'rxjs/operators';

export class MyComponent implements OnInit {
    constructor(private router: Router, private activatedRoute: ActivatedRoute) {}

    ngOnInit() {
        this.router.events.pipe(
            filter(event => event instanceof NavigationEnd)
        ).subscribe(() => {
            console.log(this.activatedRoute.root);
        });
    }
}

使用 pipe 运算符而不是尝试对可观察对象进行链式过滤。

关于Angular 6 router.events.filter 'filter' 在类型 'Observable<Event>' 上不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50353164/

相关文章:

javascript - Angular 4 : Can't bind to 'ngForFor' since it isn't a known property of 'li'

angular - 在 Angular 2.0.0-beta.0 中,表单输入的 Observable 中缺少 map() 和 filter()

RxJS - 没有订阅/BehaviorSubject 也一样吗?

typescript - 将translateProvider.useLoader 与Typescript 结合使用

angular - Plunker 在更新到 Angular 6 和 rxjs 6 后损坏

javascript - 如何去抖动内部组件的@Output?

angular - 单击确认按钮关闭 swal

angular - 动画无法在移动设备上运行

javascript - TypeError : formats. dateTimeString.toISOString 不是函数

postgresql - 如何在 TypeORM 中定义 varchar 和 enum?