2016-12-25 5 views
6

Как проверить параметры маршрута в Angular2? Например, у меня есть маршрут:Угловой 2 Проверка параметров маршрута

{path: 'artist/:id', component: ArtistInfoComponent} 

Все, что я хочу, чтобы проверить, если параметр id является допустимым числом, и если да, то просто показать компонент. В противном случае вы увидите страницу с сообщением об ошибке.

Я нашел Route Guard в Angular 2, но я думаю, что это не лучший способ сделать валидацию, потому что у меня может быть много разных параметров для разных страниц и написания индивидуального Route Guard для всех этих страниц - это не то, что я хочу.

Есть ли возможность указать регулярное выражение для каждого параметра маршрута?

UPD: Может быть, есть способ сделать проверку на параметрах запроса? Я имею в виду, если у меня есть такой url: /search?q=blablabla&page=2, как я могу проверить, действительно ли параметр page? Есть ли способ сделать это без гвардии?

+0

Немного помогите отсюда, но быстрый google дал следующее: https://github.com/angular/angular/issues/12442 кажется, что не может использовать регулярное выражение пока (??), если вы не найдете информация об этом загадочном «urlMatcher», о котором говорится. Но, как сказано, я не знаю, просто нашел эту страницу :) – Alex

ответ

2

Гвардейцы - это путь, вы можете настроить валидацию на участок маршрута и создать многоразовый защитник для проверки параметров на основе этой конфигурации.

+0

Хороший ответ! Спасибо – Taras

+0

Хорошо, но может быть, есть способ сделать валидацию по параметрам запроса? Я имею в виду, если у меня есть такой url: '/ search? Q = blablabla & page = 2' как я могу проверить, является ли параметр' page' действительным? Есть ли способ сделать это без гвардии? – Taras

+0

Router несет ответственность за обработку изменений местоположения, поэтому это правильное место для проверки. Также вы можете проверить параметры в своем компоненте и вручную перенаправить с помощью маршрутизатора в случае, если параметр недействителен. – kemsky

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