Angular 4 - 如何在直接启动子路由URL时重定向到父路由?

时间:2018-03-07 19:34:33

标签: angular angular-routing angular-router angular-route-guards

要求非常简单。当直接在浏览器中输入子路由/组件的URL时,我应该能够将其重定向到父路由。
问题:
1。如何识别页面刷新或直接启动子路由?
2。如果直接启动子路由,如何从ActivatedRoute对象获取其父路由URL?

解决方案:
我在Child Component的OnInit中有以下代码:

SELECT group_id
FROM groups
WHERE group_id NOT IN (SELECT group_id
                       FROM users_groups
                       WHERE user_id = 4);

从父路线导航时,正在记录路由器事件。但是直接启动子URL时,不会记录任何事件。
还在路由配置中尝试了 canActivateChild ,但不知道如何确定父组件是否已加载?
任何帮助表示赞赏。在此先感谢!

1 个答案:

答案 0 :(得分:0)

如果您可以向服务器添加重定向规则或中间件,那么它将是最简单的,例如。将/straight_to_children_no_go/**重定向到/straight_to_children_no_go。在通常的**之前加上 - > index.html -rule。

如果没有,如果有人能想到一种我想知道的更干净的方式,那么角度就会有很多(黑客)方式。例如。它可以是链接上的指令,当点击时,标记服务中的标志,表示这条路线可以去,并基于此建立一个canActivate防护。