typescript - Angular 6 router.events.filter 'filter' finnes ikke på typen 'Observable'
Jeg har ferdigstilt oppdateringen av appen min til Angular 6 (den var i versjon 5.2).
Jeg fikk en syntaksfeil i :
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
});
feil TS2339: Egenskapen 'filter' finnes ikke på typen 'Observable'.
Hva er riktig syntaks i Angular 6?
takk
Svar #1
Slik filtrerer du routerhendelser med Angular 6+ og nyeste 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);
});
}
}
Bruker pipe-operatoren i stedet for å forsøke å kjede filter på observablen.
Svar #2
Jeg ser ikke i koden din om du importerte filter
for Rxjs 6:
import { filter } from 'rxjs/operators';
.
.
.
this.router.events.pipe(
filter((event:Event) => event instanceof NavigationEnd)
).subscribe(res => console.log(res))
