2016-12-29 2 views
0

Использование Ui-маршрутизатор В Angular1 Значение stateparam приходит с использованием $ state.params

Как сделать то же самое в ANgular2

Я попытался, как это this._uiRouter.globals.params.id

это работает, но это не правильное решение, даже я использую редактор webstrome, редактор ошибок также показывает, как TS2339 Property ID не выходы на typeStateParams,

Пожалуйста, помогите мне сделать правильный путь

+0

вы проверили '' params' из this._uiRouter.stateService.params'? – ranakrunal9

+0

yes, Когда я утешаю его, я получаю один объект StateParams {id: '1'} –

+0

, если ваши необходимые параметры входят в него, вы можете использовать 'this._uiRouter.stateService.params', чтобы получить значение вашего параметра – ranakrunal9

ответ

2

вы можете получить параметры состояния от экспортируемого объекта Перехода при настройке URL состояния:

import {Transition} from "ui-router-ng2"; 
... 
export const personState = { 
    name: 'person', 
    url: '/people/:personId', 
    component: Person, 
    resolve: [ 
    { 
     token: 'stateParams', 
     deps: [Transition], 
     resolveFn: (trans) => trans.params() 
    } 
    ] 
}; 

тогда в вас код компонента:

import {Component, Input} from '@angular/core'; 
import {UIROUTER_DIRECTIVES, Transition} from 'ui-router-ng2'; 

@Component({ 
    directives: [UIROUTER_DIRECTIVES], 
    template: ` 
    <h2>stateParams</h2> 
    <pre>{{ stateParams | json }}</pre> 
`}) 

export class Person implements OnInit { 
    @Input() stateParams; 

    ngOnInit() { 
    // here you will have all passed state params 
    console.log(this.stateParams); 
    } 

    constructor() { 
    } 
} 

модифицированный плункер с https://ui-router.github.io/tutorial/ng2/hellosolarsystem#live-demo: https://plnkr.co/edit/IVGx0p9lQr1yKqgwZT4X

обратить внимание на 2 файлов:

  1. state.ts
  2. компоненты/person.ts
+0

Объявление UIRouter_DIRECTIVE в @component недоступно. –

+0

, если вы имеете в виду UIROUTER_DIRECTIVES, то они импортируются из модуля ui-router-ng2: import {UIROUTER_DIRECTIVES, Transition} из 'ui-router-ng2 (я обновил свой ответ на 2 импорта)'; Проверьте рабочий плункер: https://plnkr.co/edit/IVGx0p9lQr1yKqgwZT4X?p=preview, нажмите ссылку «Люди», а затем щелкните по любому человеку - параметры состояния будут удалены и распечатаны на экране. – Andriy