2016-05-13 3 views
2

Некоторые пользователи входят в мое веб-приложение с помощью приглашений. поэтому у них будет ссылка, которая выглядит примерно так: https://example.com/invitaion/12345 где 12345 - их уникальный номер приглашения.Угловой 2 RC1: Получить параметры с исходного URL-адреса

Когда пользователи нажимают на ссылку, и мой AppComponent инициализируется на стороне клиента фреймворком, как я могу получить тот факт, что URL-адрес был «приглашением/*» и как мне получить номер приглашения?

ответ

0

Чтобы получить доступ к этой переменной и использовать ее в своем компоненте, вы должны использовать RouteParams.

// let's assume you labeled it as `path : '/invitation/:id'` in your @Route setup. 

@Route([ 
    { path : '/invitation/:id', component : MyComponent } 
]) 

Теперь внутри самого компонента:

import { RouteParams } from '@angular/router'; 

// Now simply get the ID when injecting RouteParams within your constructor 

class MyComponent { 
    id: string; 
    constructor(_params: RouteParams) { 
     this.id = _params.get('id'); 
    } 
} 
+0

Вам может понадобиться, чтобы попытаться импортировать RouteParams из '@ угловой/маршрутизатор-deprecated', если это не работает, дайте мне знать! –

2

В новом маршрутизаторе (> = rc.0) в AppComponent это может быть сделано с

import 'rxjs/add/operator/first'; 
    .... 

    constructor(private router:Router, private routeSerializer:RouterUrlSerializer, private location:Location) { 
    router.changes.first().subscribe(() => { 

    let urlTree = this.routeSerializer.parse(location.path()); 
     console.log('id', urlTree.children(urlTree.children(urlTree.root)[0])[0].segment); 
    }); 
    } 

(в получить второй сегмент)

В MyComponent это проще:

routerOnActivate(curr:RouteSegment, prev?:RouteSegment, currTree?:RouteTree, prevTree?:RouteTree):void { 
    this.id = curr.getParam('id'); 
} 
Смежные вопросы