Угловой 6 router.events.filter 'filter' не существует в типе 'Observable <event> ' - программирование
Подтвердить что ты не робот

Угловой 6 router.events.filter 'filter' не существует в типе 'Observable <event> '

Я закончил обновление своего приложения до 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
    });

ошибка TS2339: Свойство 'фильтр' не существует в типе 'Observable'.

какой правильный синтаксис в Angular 6?

Спасибо

4b9b3361

Ответ 1

Вот как фильтровать события маршрутизатора с помощью 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 вместо того, чтобы пытаться связать фильтр с наблюдаемым.

Ответ 2

Я не вижу в вашем коде, если вы импортировали фильтр

для Rxjs 6:

import { filter } from 'rxjs/operators';

    .
    .
    .

     this.router.events.pipe(
       filter((event:Event) => event instanceof NavigationEnd)
     ).subscribe(res => console.log(res))