Обновление текущего маршрута перенаправляет на родительский маршрут вместо этого в Angular 5 - PullRequest
0 голосов
/ 26 октября 2018

У меня Angular 5 маршрутов, настроенных следующим образом:

  {path: 'malls', component: MallsComponent},
  {
    path: 'malls/new', component: MallEditComponent,
    resolve: {body: MallResolve}
  },
  {
    path: 'malls/:id', component: MallEditComponent,
    resolve: {body: MallResolve}
  },
  {
    path: 'malls/:mallId/point-sales', component: MallPointSalesComponent,
  }

У меня есть код для перезагрузки текущей страницы при изменении некоторых параметров фильтра / подкачки / заказа, который выглядит следующим образом:

private changeFilterRoute() {
  let queryParams = {
    'sorter.sortOrder': this.sort.active,
    'sorter.direction': this.sort.direction,
    'page': this.paginator.pageIndex,
    'pageSize': this.paginator.pageSize
  };

  this.router.navigate(this.route.snapshot.url, {
    queryParams: queryParams
  })
}

Метод changeFilterRoute () вызывается каждый раз, когда изменяется параметр подкачки или фильтрации, и он должен перезагрузить текущую страницу.Но вместо перезагрузки текущей страницы он перенаправляет пользователя на родительский путь.

Например, я нахожусь на маршруте

malls / {: mallId} / point-sales

Где mallId - это просто число.Затем я изменяю любой из параметров подкачки / фильтрации, вызывается метод changeFilterRoute () , и случайно метод перенаправляет меня на свой родительский маршрут:

malls /: id

с MallResolve обработка.Пожалуйста, помогите мне понять, что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Проблема в вызове router.navigate Вы должны извлечь строки пути из urlSegments из route.snapshot.url, как это

this.router.navigate(this.route.snapshot.url.map(urlSegment => urlSegment.path), {
    queryParams: queryParams
});
0 голосов
/ 26 октября 2018

попробуйте

 constructor(public router: Router, private route: ActivatedRoute,) {}
 ...

 this.router.navigate(['.'], {queryParams: queryParams,  relativeTo: this.route});
...