我试图在Angular6中创建一个全局 Headers ,带有动态的超链接列表,每个页面都有不同的超链接 . 超链接始终引用相对于当前URL的某个页面 . 但是routerLink-s在全局标头中不起作用 . 这意味着,当我在app根头中有一个routerlink时,我尝试 Build 当前正在使用的懒惰加载模块的相对链接,该模块当前正在使用,并且我已经加载了一个菜单 .
意思是,如果我在URL上
http://example.com/company/8/employee
全局菜单包含超链接
<a routerLink="./profile">
然后单击该routerLink,将带我到example.com/profile . 它充当绝对联系 . 现在,如果在同一页面上,我将相同的代码插入到作为主体加载的雇员组件中,它的工作方式不同,它将重定向到我 .
http://example.com/company/8/employee/profile
我不明白,为什么它不会将全局路由器url状态作为相对性基础,而是尝试从路由器树中的根(其中标头为 - )进行路由 .
当相对URL-s在那里不能正常工作时,如何在Angular的头文件中管理全局相关菜单?
2 回答
由于
./
是routerLink
的前缀,因此它会将当前URL视为其重定向的基础 ../
只是一个相对路径,所以如果你把<a routerLink="./profile">
放在app.component
中,它会重定向到example.com/profile
如果你把相同的链接放在employee.component
中,它会重定向到http://example.com/company/8/employee/profile
如果你需要绝对路径重定向,只需添加
/
(例如:<a routerLink="/profile">
),这样无论组件如何,它都会重定向到example.com/profile
几个星期后我找到了答案 .
您可以将relativeTo传递给路由器,这有助于这些情况 . 您可以转发另一个组件ActivatedRoute并将其用作相对性基础 .