knockout.js - Hur man öppnar en ny flik med router.navigate i TypeScript
Följande TypeScript-kod kommer alltid att öppnas i den aktuella webbläsarfliken
navigate($data: menuItem, $event: JQueryEventObject) {
//...
let a = $event.currentTarget as HTMLAnchorElement;
router.navigate(a.href);
}
Hur gör jag för att router.navigate ska öppnas i en ny flik? (det vill säga när $event.ctrlKey är sant)
Svar #1
det här är min lösning
const url = this.router.serializeUrl(this.router.createUrlTree(['/my/url/route'], { queryParams: { ...anyQueryParamsYouWantOrOmitThis } }));
window.open(url, '_blank');
Svar #2
Den här fungerar med # hash (som https://example.com/#/users) och icke-hashadresser
openInNewTab(router: Router, namedRoute) {
let newRelativeUrl = router.createUrlTree([namedRoute]);
let baseUrl = window.location.href.replace(router.url, '');
window.open(baseUrl + newRelativeUrl, '_blank');
}
Svar #3
Ja, som du @Daneille kommenterade, måste du hantera det på ditt eget sätt eftersom Durandals router-plugin (navigate-funktionen) inte erbjuder ett sätt att öppna en ny flik.
Så det är bättre att hantera något på det sätt som du kommenterade.
if ($event.ctrlKey) {
window.open(url);
}
