0

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

已尝试的解决方案:
我的子组件的 OnInit 中有以下代码:

this.router.events.subscribe((event) => {
  console.log(event);
});

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

4

1 回答 1

0

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

如果没有,角度有很多(hacky)方式,如果有人能想到一种我也想知道的更清洁的方式。例如。它可能是关于链接的指令,当单击该指令时,会在服务中标记一个标志,表示该路线可以转到,并基于此构建一个 canActivate 守卫。

于 2018-03-07T20:15:49.183 回答