web-dev-qa-db-ja.com

Angularでルートが変更され、新しいビューが置き換えられたときに検出する方法

ルートが変更され、新しいビュー(html)が置き換えられたときを検出したいと思っています。

コードの下を試してみましたが、さらに先に進む方法がわかりません。

this._routerSub = this.router.events
  .filter(event => event instanceof NavigationEnd)
  //.do(event => console.log(event)) // 
  .subscribe((value) => { });

以下のコードも試しましたが、エラーが発生しました

タイプイベントの引数は、タイプ '(value:Event)=> void'のパラメーターに割り当てることができません。

   import { Router, NavigationEnd, Event  } from '@angular/router';

   this._routerSub = this.router.events  
      .subscribe(event : Event) => {
      if (event instanceof NavigationEnd) {
        console.log(event.url);
      }
    });

以下のベガは私のapp.component.tsとapp.component.tsコードです。アクティベート時にonActivateを呼び出すことは想定されていませんか。新しいコンポーネントがインスタンス化されているときはいつでも、ルーターアウトレットはアクティブ化イベントを発行します。

app.component.html

<router-outlet (activate)="onActivate($event)" ></router-outlet>

app.component.ts

   onActivate(e) {
        debugger;
        console.log(1);
      }
6
Sunil Kumar

ルーターアウトレットで公開されたactivateイベントを使用する方法:

<router-outlet (activate)="onActivate($event)"></router-outlet>

onActivate(e) {
  console.log(e.constructor.name);
  //etc... you can access to a lot of other information
}
8
Vega