in src/components/relativePathRouter.ts [48:89]
public async navigateTo(url: string, title: string = null, metadata: Object = {}): Promise<void> {
if (!url) {
return;
}
const isFullUrl = url && (url.startsWith("http://") || url.startsWith("https://"));
const isLocalUrl = url.startsWith(location.origin);
if (isFullUrl && !isLocalUrl) {
window.open(url, "_blank"); // navigating external link
return;
}
if (isFullUrl) {
url = url.substring(location.origin.length);
}
if (url.startsWith(this.basePath + "/")) {
url = url.substring(this.basePath.length);
}
const parts = url.split("#");
const route: Route = {
url: this.appendBasePath(url),
path: parts.length > 1 ? parts[0] || location.pathname : parts[0],
title: title,
metadata: metadata,
hash: parts.length > 1 ? parts[1] : "",
previous: this.currentRoute
};
const canActivate = await this.canActivate(route);
if (canActivate) {
this.currentRoute = route;
if (this.notifyListeners) {
this.eventManager.dispatchEvent(RouterEvents.onRouteChange, route);
}
}
}