2015-11-05 55 views
2
  1. 我正在尋找angular2中的stateparams。在angular2官方網站上搜索後,我發現了這一點。

<a [router-link]="[ '/MyCmp', {myParam: 'value' } ]">如何在angular2中獲取stateparams的值?

,但我不明白如何讓在班上或 類的構造函數這個價值?

  • 在角的cheatsheet有路線配置的三種方法是有任何

    @RouteConfig([ { path: '/:myParam', component: MyComponent, as: 'MyCmp' }, { path: '/staticPath', component: ..., as: ...}, { path: '/*wildCardParam', component: ..., as: ...} ])

  • 是什麼這些所有三個之間的差:/和/:和/ *?

    回答

    4

    您可以將RouteParams對象注入到構造函數中,然後調用get函數。這是official documentation

    import {bootstrap, Component} from 'angular2/angular2'; 
    import {Router, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, RouteConfig} from 'angular2/router'; 
    @Component({directives: [ROUTER_DIRECTIVES]}) 
    @RouteConfig([ 
    {path: '/user/:id', component: UserCmp, as: 'UserCmp'}, 
    ]) 
    class AppCmp {} 
    @Component({ template: 'user: {{id}}' }) 
    class UserCmp { 
        id: string; 
        constructor(params: RouteParams) { 
        this.id = params.get('id'); 
        } 
    } 
    

    關於三個語法的例子,他們似乎言自明

    { path: '/:myParam', component: MyComponent, as: 'MyCmp' }, //Route with param 
        { path: '/staticPath', component: ..., as: ...},   // Fixed route 
        { path: '/*wildCardParam', component: ..., as: ...}  //match any route which ends with wildCardParam 
    

    更新http://plnkr.co/edit/iRUP8B5OUbxCWQ3AcIDm?p=preview

    它使用RouteParams從文檔見本plunkr 我觀察到的一件事是RouteParams只有在路由本身有參數時纔可用定義,否則你會得到下面的錯誤。

    +0

    我已經使用你的代碼,但得到錯誤命名爲「RouteParams」沒有找到。我應該不得不從某處導入或注入RouteParams? –

    +0

    @Pardeepjain看到我的更新 – Chandermani

    +0

    thnx for plnkr。但是我用'@ injectable'和'@ inject'完成了我的問題 –

    相關問題