1. 程式人生 > >Property 'filter' does not exist on type 'Observable' 報錯解決方法

Property 'filter' does not exist on type 'Observable' 報錯解決方法

 

我想做的是監聽地址引數變化:

import 'rxjs/operator/filter';

//...

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

但報錯如下圖顯示:

解決方法:

對於RXJS 5.x版本:

import 'rxjs/add/operator/filter';

對於RXJS 6.x 版本:

import { filter } from 'rxjs/operators';
import { filter } from 'rxjs/operators';

// ..

 this.router.events.pipe(
   filter((event:Event) => event instanceof NavigationEnd)
 ).subscribe(x => console.log(x))
import 'rxjs/operator/filter'; // This is valid import statement.
                               // It will import the operator without 
                               // modifying Observable prototype
// ..

// Change how the operator is called
filter.call(
   this.router.events, 
   (event:Event) => event instanceof NavigationEnd
).subscribe(x => console.log(x));