Angular如何检测子/嵌套路由是否返回到父级

时间:2018-06-13 07:29:28

标签: angular angular2-routing angular-router

我有一个可以通过路径到达的组件:

/parent

在该组件中,我有一个子/嵌套路由,可以通过路径到达:

/parent/child1
/parent/child2

在子/嵌套路由的组件中,我有一个按钮,用

路由回父组件
  this.router.navigate(['parent']);

我想要发生的是,只要子/嵌套路由导航回父级,就只在父组件中调用一次方法。

但我现在面临的问题是,我不确定我是如何发现的。 我已经尝试过生命周期钩子,但没有一个真正帮助过我。 路由回父节点,ngOnInit不会被调用,其他生命周期钩子被调用多次。

编辑: 我知道我可以通过在返回路由之前使用子组件调用的StateService来处理这个问题,并且父级会将子语言包含在状态中,但这听起来像是一个糟糕的解决方案

1 个答案:

答案 0 :(得分:1)

在您的组件中,您可以使用

import { Router } from '@angular/router'

constructor(private router: Router){}

this.router.events.subscribe(route => {
   //here you have different event types
   //NavigationStart tells you the route you come from
   //NavigationEnd tells you the route you are reaching
})

因此,您可以轻松查看是否要回到父母那里。创建一个console.log(路由),以便您可以看到返回的对象