Angular 2 RC1: получение параметров из исходного использованного URL

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

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

2 ответа

Решение

Вы хотите использовать 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');
    }
}

В новом роутере (> = 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);
    });
  }

(чтобы получить 2-й сегмент)

В MyComponent это проще:

routerOnActivate(curr:RouteSegment, prev?:RouteSegment, currTree?:RouteTree, prevTree?:RouteTree):void {
  this.id = curr.getParam('id');
}
Другие вопросы по тегам