Установите необязательный идентификатор параметра activeRoute без навигации вообще

У меня есть страница фильтра поиска, которая отображает продукты поиска, а также отображает сведения о продукте в модальном режиме, когда пользователь нажимает на продукт поиска.

Теперь я хочу программно установить существующий необязательный параметр id активированного маршрута, когда пользователь нажимает на продукт. Вот почему это необязательно - при первой загрузке у него не будет параметров, пока пользователь не щелкнет по нему - тогда они могут поделиться этой ссылкой с конкретным продуктом после нажатия на нее, скопировав и вставив ее из URL-адреса браузера.

Это моя попытка программно установить необязательный параметр:

маршруты:

export const routerConfig: Routes = [
   {
      component: LandingPageComponent,
      path: "",
   },
   {
      component: FindPageComponent,
      path: "find/:id",
   },
   {
      component: FindPageComponent,
      path: "find",
   },... 

установить дополнительный параметр идентификатора активированного маршрута:

export class ResultCardComponent {
   @Input() public result: Result;
   @Output() public onResultClicked: EventEmitter<Result> = new EventEmitter<Result>();
   public paramsSub: any;
   public selectedId: any;

   private resultId: string;

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

   public emitResult() {
      this.onResultClicked.emit(this.result);
      this.paramsSub = this.route.params.subscribe((params) => this.selectedId = params["id"]);
      this.router.navigate(["find", this.result.id]);//only doing this as a hack workaround.
   }
}

В идеале я хочу удалить нижнюю строку, чтобы прекратить физическую навигацию, которая является пустой тратой ресурсов.

EDIT: кажется, это работает:

   public emitResult() {
      //this.onResultClicked.emit(this.result);
      this.route.params['id'] = this.result.id;
   }

однако он не меняет URL-адрес, я думаю, потому что он снова не загружает страницу


person BeniaminoBaggins    schedule 02.01.2017    source источник


Ответы (1)


См. этот ответ, для необязательные параметры Я думаю, вам нужно будет использовать параметры запроса!

person Stefano    schedule 28.12.2017