2016-09-21 24 views
0

Предположим, у меня есть шаблон HTML со следующим элементом.Извлечение параметров запроса внутри компонента

<a [routerLink]="['/final', {issue_id: 2356254}]">SUBMIT</a> 

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

http://localhost:3000/final;issue_id=2356254 

Я пытаюсь открыть параметр запроса внутри конструктора моего компонента.

export class FinalComponent { 
    constructor(private route: ActivatedRoute){ 
     this.issueId = route.params._value.issue_id; 
     console.log(this.issueId); 
    } 
} 

Это работает до сих пор, но я знаю, что это неправильный метод. Каков правильный способ доступа к параметрам запроса в компоненте Angular 2?

ответ

1

Использование ActivatedRoute - хорошее начало. Вы можете подписаться на params собственности, поскольку это Observable:

constructor(private route: ActivatedRoute) { } 

ngOnInit() { 
    this.route.params.subscribe(params => { 
    // access route params 
    console.log(params['id']); 
    }); 
} 

образца на GitHub

https://github.com/Angular2Buch/book-monkey2/blob/master/src/app/book-monkey/iteration-4/http/book-details/book-details.component.ts#L23

route.snapshot

Если вас не интересуют изменения параметра, вы можете просто использовать this.route.snapshot.params. Таким образом, вам не нужно обращаться с Observables.

Образец

constructor(route: ActivatedRoute) { 
    let id = route.snapshot.params['id]; 
} 
+0

Это сработало! Я просмотрел документацию Angular и нашел этот код. this.route.params.forEach ((params: Params) => { this.issueId = + params ['issue_id']; }); , но я думаю, что ваш подход намного лучше. – ssudaraka

+0

Не работает для меня, я получаю: aot/app/app.component.ngfactory.ts (45,30): ошибка TS2346: Поставляемые параметры не соответствуют какой-либо сигнатуре целевого вызова. – jjj

+0

@jjj У вас есть дополнительная информация по этому вопросу? Пример кода или что-то в этом роде? –

Смежные вопросы