У меня есть страница фильтра поиска, в которой отображаются продукты поиска, а также отображается информация о продукте в модальном режиме, когда пользователь нажимает на продукт поиска.Установить активированный необязательный параметр «id» без навигации вообще
Я хочу, чтобы программный код существующего id активированногоRoute был установлен, когда пользователь нажимает на продукт. Вот почему он не является обязательным - при первой загрузке он не будет иметь никаких параметров, пока пользователь не нажмет на него - тогда они смогут поделиться этой ссылкой с конкретным продуктом после нажатия на него копией и вставить его из URL-адреса браузера.
Это моя попытка программно установить дополнительные параметры:
маршруты:
export const routerConfig: Routes = [
{
component: LandingPageComponent,
path: "",
},
{
component: FindPageComponent,
path: "find/:id",
},
{
component: FindPageComponent,
path: "find",
},...
набор activatedRoute ID опциональный Param:
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, я думаю, потому что оно не загрузить страницу снова