2017-02-16 9 views
1

Я перенаправляет на мой Angular2 сайта с некоторыми (необязательно) приложенных параметров, как так:Распаковка необязательное значение параметра из URL на angular2

https://my-site.com/?param1=some-value1&param2=some-value2 

Так я хочу, чтобы извлечь значения в переменные, если они существуют:

let value1 = extractValueByParam(url, param1Str); 

Можно ли это сделать с помощью переменных маршрутизатора? Или что такое «правильный» способ сделать это?

До сих пор лучшим методом, который я нашел, является использование значения window.location.href и его синтаксического анализа, но это не похоже на правильную вещь.

Спасибо!

ответ

1

Вы должны использовать queryParams:

constructor (private _ar: ActivatedRoute) {} 

ngOnInit() { 
    this._ar.params.subscribe(params => console.log(params)); // params used with '/' 
    this._ar.queryParams.subscribe(params => console.log(params)); // optional params used with '?'/'&' 
} 

официальные документы:

+0

Именно то, что я искал! Благодаря! – ronenmiller

+0

Еще одна вещь, я вижу, что процентные знаки (%) заменяются на «/» в queryParams, как я могу сохранить эти процентные знаки, так как мне нужно переносить их вперед для BE – ronenmiller

+0

, какие процентные знаки? не знаю внутренней логики, может быть, ее ошибка в угловой ... – mxii

0

В ваших ngModules установить маршрут как:

{path: '/:param1/:param2', component: YourComponent} 

Тогда в компоненте, получить значение следующим текстом:

if(params['param1']){ 
    var param1 = params['param1']; 
} 
+0

Но мой URL не такой формы, как бы этот матч? чтобы быть конкретным, у меня нет '/' между параметрами. – ronenmiller

+0

Также получение этой ошибки: необработанное отклонение обещания: неверная конфигурация маршрута '/: токен': путь не может начинаться с косой черты; – ronenmiller