У меня есть страница фильтра поиска, которая отображает продукты поиска, а также отображает сведения о продукте в модальном режиме, когда пользователь нажимает на продукт поиска.
Теперь я хочу программно установить существующий необязательный параметр 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-адрес, я думаю, потому что он снова не загружает страницу