アプリを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:プロパティ 'filter'はタイプ '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
演算子を使用します。
フィルターをインポートした場合、コードには表示されません
rxjs 6の場合:
import { filter } from 'rxjs/operators';
.
.
.
this.router.events.pipe(
filter((event:Event) => event instanceof NavigationEnd)
).subscribe(res => console.log(res))