Обработка маршрутов с помощью QueryParam в Angular2

У меня есть два маршрута в моем приложении

{path: 'activity/?cInfo=askjdfkajsdfkasd', component: PostComponent},
{path: 'activity/:id', component: PostDetailComponent}

Что я должен сделать, чтобы заставить их работать?

Маршрут со строкой запроса ?cInfo=askjdfkajsdfkasd должен идти в PostComponent

и маршрут, например activity/skjdfhakjdfhaajsdf, должен перейти к PostDetailComponent.

Я попытался

{path: 'activity/?cInfo=askjdfkajsdfkasd', component: PostComponent,canActivate:[CheckForListPage],pathMatch:'full'},
{path: 'activity/:id', component: PostDetailComponent,canActivate:[CheckForDetailPage]}

но каждый раз 1 вызывается. Охранники возвращаются логически.

Делает ли angular различие между queryParams и pathVariables, как это делает большинство MVC?


person Dinkar Thakur    schedule 10.02.2017    source источник


Ответы (1)


Я думаю, вы должны объявить свои маршруты таким образом.

{path: '/activity', component: PostComponent,canActivate:[CheckForListPage]},
{path: '/activity/:id', component: PostDetailComponent,canActivate:[CheckForDetailPage]}

Таким образом, когда вы переходите к /activity?cInfo=askjdfkajsdfkasd, маршрутизатор сопоставляется с первым определенным маршрутом (/activity), а затем вы можете получить параметры запроса, переданные маршруту внутри компонента (Посткомпонент).

ngOnInit(): void {
    this.route.queryParams
        .subscribe(params => {
          // complete params object
          console.log(params);

          // your param passed 
          console.log(params['cInfo'])
        });
}

Конечно, вам нужно импортировать @angular/route ActivatedRoute

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

И установите маршрут в вашем конструкторе как свойство типа ActivatedRoute перед первым фрагментом кода (который должен быть в методе ngOnInit вашего класса компонента, что означает, что ваш класс компонента должен реализовывать OnInit из @angular/core) .

constructor(
    private route     : ActivatedRoute
){}
person Gonzalo Bahamondez    schedule 10.02.2017
comment
любая идея, как справиться с чувствительностью к регистру? - person Dinkar Thakur; 11.02.2017
comment
@DinkarThakur Что именно ты имеешь в виду? Что-то вроде этого? stackoverflow.com/questions/36154672/ - person Gonzalo Bahamondez; 12.02.2017