抽出したいNavigationEnd タイプの最後のイベントエントリのみrouter.events から。しかし、どういうわけか、これを行う適切な方法が見つかりません。何を試しても、次のコード スニップが、これらの対象オブジェクトにアクセスする唯一の方法です。
let ne: any;
router.events.filter(e => e instanceof NavigationEnd)
.forEach(e => {
ne = e as NavigationEnd;
});
console.log('target page: ', ne.urlAfterRedirects);
しかし、.forEach() を使ってすべてのエントリを実行し、最後のエントリを使用する必要があるのでしょうか? イベントを一種の配列として処理して、次のようにするより良い方法はないでしょうか?
ne = arrayOfEvents[arrayOfEvents.length-1]
?
私はそれについて夢中になっていますが、木を見て森を見ていないようです...
ベストアンサー1
PS. フィルタリングには、インスタンスオブタイプガードすると、再度アサートしなくても適切な型が取得されます。
this.firstChildData$ = this.router.events.pipe(
filter((e): e is NavigationEnd => e instanceof NavigationEnd),
map(e => {
// e is now NavigationEnd
})
);