如何知道组件是嵌入式的还是从路由器调用的

时间:2018-09-25 04:24:43

标签: angular angular2-routing

嗨,我有一个登录组件,所以在我的login component.ts文件中,我如何知道何时:

  1. 从路由器中调用该组件,例如https://my-domain/login
  2. 此组件是从父组件中包含(嵌入)的

谢谢

2 个答案:

答案 0 :(得分:1)

您问题的答案肯定是使用Component Lifecycle Hook

例如,在您的Login Component中,您可以使用ngOnInit(){}来跟踪它是否被实例化。每当调用Login Component时,该函数也会被调用。

  constructor(private logger: LoggerService) { }
  ngOnInit(){
      this.logIt(`onInit`);
  }

此外,还有很多生命周期钩子,请选择任何适合您需求的钩子。

答案 1 :(得分:1)

这是一个非常不寻常的情况。

一种解决方案是在加载所述登录组件时检查应用程序的 route

Use this link,了解获取应用程序当前URL的不同方法。 就个人而言,我更喜欢这个:

constructor(router: Router) {
  const url = router.url;
  if(url.indexOf('login') > 0) {
    // this is component is loaded from login route
  } else {
    // this is loaded from parent component
  }
}