Angular 路由器无法使用子目录中的绝对路径正确路由

Angular Router not routing correctly with Absolute Path in subdirectory

我试图让 Angular 路由器在站点托管在子目录中时导航到绝对路径。

当前网站托管于: www.example.com/ngSite/

举个例子,我在点击事件中有这段代码

onClick(primaryLink){
    let link: string = primaryLink.getAttribute('href');
    //I expect link to look like this: /ngSite/path/to/thing
    this.router.navigateByUrl([link]);
}

这应该导航到:

www.example.com/ngSite/path/to/thing

而是导航到(注意重复的子目录):

www.example.com/ngSite/ngSite/path/to/thing

在 angular.io 的文档中说

Always specify the complete absolute path when calling router's navigateByUrl method.

这就是我认为我正在做的事情。也许我遗漏了一些明显的东西,但任何输入都将不胜感激。

你的路由有重定向吗,像这样:

RouterModule.forChild([ { path: '', redirectTo: 'whatever' }, { path: 'whatever', component: WhateverController },

尝试用实际组件替换 redirectTo。

RouterModule.forChild([ { path: '', component: WhateverController }, { path: 'whatever', component: WhateverController },

这有助于解决我的相关问题,即产生了错误的 URL。

我通过在传入的元素上调用点击事件解决了这个问题。

所以我的简单示例将变为如下所示:

onClick(primaryLink){
    this.renderer.invokeElementMethod(primaryLink, 'click');
}