Угловой 2+ необязательный параметр (запрос)

Мое приложение будет доступно извне по URL-адресу, и, поскольку мне нужно идентифицировать между определенными объектами, мне нужно предоставить параметр id. Параметр также может отсутствовать.

Моя проблема в том, что у меня есть запрос на использование параметра запроса. Я видел много решений, когда пользователь взаимодействует с определенным элементом, и он перенаправляется с дополнительными параметрами с помощью navigationExtras.

Я попытался оставить путь: 'логин' и просто добавить параметр запроса, но он дает мне

Ошибка: не удается сопоставить ни один маршрут. Сегмент URL: 'логин% 3Fid% 3D1'

То же самое и с параметрами матрицы, но с другой строкой между login и id.

Я могу использовать это как решение, но это заставит меня дублировать все мои маршруты, а также это не соответствует запросу о параметрах запроса.

{
  path: 'login',
  redirectTo: 'login/',
},
{
  path: 'login/:id',
  component: LoginComponent,
},

Любое предложение?


person sirbushir    schedule 12.04.2018    source источник


Ответы (2)


В своем ответе вы указываете параметры маршрута. login/:id. Когда вы попытаетесь получить доступ к значению :id, вы получите его из: activatedRoute.snapshot.params['id'], и оно будет соответствовать любому маршруту: login/123, login/234, login/someRandomString.

С другой стороны, queryParams добавляется как queryString в конец URL-адреса. login?query1=something&query2=somethingElse. Здесь query1 и query2 называются параметрами запроса.

Чтобы добавить queryParams:

this.router.navigate(['/login], {queryParams: { query1: 'something', query2: somethingElse }); or

<a [routerLink]="['/login']" [queryParams]="{query1: something, query2: somethingElse}">Router Link to Login</a>

person Chau Tran    schedule 12.04.2018
comment
Это единственный способ добавить queryParams? Моя проблема в том, что мне нужно, чтобы запрос уже был в URL-адресе и обрабатывался, когда я открываю приложение. Я не могу никуда перемещаться - person sirbushir; 12.04.2018
comment
Тогда я действительно не знаю. Может быть, есть способ, а может, и нет. Теоретически нет способа добавить queryParams ДО запуска вашего приложения. - person Chau Tran; 12.04.2018

Вы можете сделать это с помощью дочерних компонентов, иметь корневой компонент, который перенаправляет на вход в систему, и родственный компонент с идентификатором, который перенаправляет на компонент входа с идентификатором

{ path: 'login', children: [ { path: '', redirectTo: 'login/', pathMatch: 'full' }, { path: ':id', component: LoginComponent, } ]

person zmanc    schedule 12.04.2018
comment
Это в основном моя вырезка. Я ищу способ объявления и интерпретации параметров запроса при запуске приложения - person sirbushir; 12.04.2018