2016-01-25 142 views
1

我正在使用Angular2路由,並且我需要訂閱路由更改時的事件。 (即用戶點擊其中一個路線鏈接)。重要的是事件應該在新視圖HTML被插入到DOM的時候。Angular2路由事件

是否有任何事件像onNavigating和onNavigated,所以我可以訂閱? 我已經找到了幾個關於stackoverflow的例子,並試圖使用它們(請參閱下面的構造函數),但那不起作用。有任何想法嗎?

/// <reference path="../../typings/tsd.d.ts" /> 

import {Component, View} from 'angular2/angular2'; 
import {RouteConfig, Router, RouterOutlet, RouterLink} from 'angular2/router'; 

@RouteConfig([...]) 

@Component({ 
selector: 'app' 
}) 
@View({ 
directives: [RouterOutlet, RouterLink], 
template: ` 
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header"> 
<header class="mdl-layout__header"> 
    <div class="mdl-layout__header-row"> 
    <span class="mdl-layout-title">Test</span> 
    <div class="mdl-layout-spacer"></div> 
    <nav class="mdl-navigation mdl-layout--large-screen-only"> 
     <a class="mdl-navigation__link" [router-link]="['/routelink1']">routelink1</a> 
    </nav> 
    </div> 
</header> 
<main class="mdl-layout__content" style="padding: 20px;"> 
    <router-outlet></router-outlet> 
</main> 
</div> 
` 
}) 
export class App { 
constructor(private router: Router){ 
     router.subscribe((val) => function(){...}); //here is I need to process HTML 
    } 
} 
+0

也許http://stackoverflow.com/questions/32532979/life-cycle-hooks-in-angular2-router。 「我需要處理HTML」是什麼意思?你做什麼你不想做什麼? –

回答

0

我結束了我的路由組件的基類,它包含routerOnNavigate覆蓋。

import {OnActivate, ComponentInstruction} from 'angular2/router'; 

export class BaseView implements OnActivate { 

    routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction) { 
    componentHandler.upgradeDom(); 
    } 

}