Angular header 相对 routerLink

Angular header relative routerLink

我正在尝试在 Angular6 中创建一个全局 header,其中包含 hyperlink 的动态列表,每个页面都不同。 hyperlinks 总是引用一些页面,相对于当前 URL。但是 routerLink-s 在全局 header 中相对不起作用。这意味着,当我在应用程序根目录 header 中有一个路由器 link 并且我尝试将相对 link 设置为当前正在使用的延迟加载模块时我已经加载了菜单。

意思是,如果我在 URL

http://example.com/company/8/employee

并且全局菜单包含一个超级link

<a routerLink="./profile">

然后点击那个routerLink,带我去举例。com/profile。它充当绝对 link。现在,如果在同一个页面上,我将相同的代码插入作为主要 body 加载的员工组件,它的工作方式会有所不同,它将我重定向到。

http://example.com/company/8/employee/profile

我不明白,为什么它不以全局路由器 url 状态作为相对基础,而是尝试从根路由,其中​​ header 是 - 在路由器树。

当 URL-s 中的 header 中的全局相关菜单无法正常工作时,我如何才能管理 header 中的全局相关菜单?

由于 ./routerLink 的前缀,它将把当前的 URL 视为其重定向的基础。

./ 只是一个相对路径,所以如果你把 <a routerLink="./profile"> 放在 app.component 中,它会重定向到 example.com/profile,如果你把相同的 link 在 employee.component 中,它将重定向到 http://example.com/company/8/employee/profile

如果您需要绝对路径重定向,只需添加 /(例如:<a routerLink="/profile">),这样无论组件如何,它都会重定向到 example.com/profile

几周后我找到了答案。

您可以将 relativeTo 传递给路由器,这在这些情况下会有所帮助。您可以转发另一个组件 ActivatedRoute 并将其用作相关性基础。

this._router.navigate(['../../method'], {relativeTo: this._activatedRoute});