如何知道组件是嵌入的还是从路由器调用的
How to know if a component is embedded or called from router
您好,我有一个登录组件,所以在我的登录 component.ts 文件中,我怎么知道什么时候:
- 此组件从路由器调用,如 https://my-domain/login
- 此组件包含(嵌入)自父组件
谢谢大家
你的问题的答案肯定是使用Component Lifecycle Hook
。
例如,在您的 Login Component
中,您可以使用 ngOnInit(){} 来跟踪它是否被实例化。每当调用登录组件时,该函数也会被调用。
constructor(private logger: LoggerService) { }
ngOnInit(){
this.logIt(`onInit`);
}
此外,还有很多Lifecycle Hooks,随便选一个适合你的。
这是一个非常不寻常的案例。
一种解决方案是在加载所述登录组件时检查应用程序的路由。
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
}
}
您好,我有一个登录组件,所以在我的登录 component.ts 文件中,我怎么知道什么时候:
- 此组件从路由器调用,如 https://my-domain/login
- 此组件包含(嵌入)自父组件
谢谢大家
你的问题的答案肯定是使用Component Lifecycle Hook
。
例如,在您的 Login Component
中,您可以使用 ngOnInit(){} 来跟踪它是否被实例化。每当调用登录组件时,该函数也会被调用。
constructor(private logger: LoggerService) { }
ngOnInit(){
this.logIt(`onInit`);
}
此外,还有很多Lifecycle Hooks,随便选一个适合你的。
这是一个非常不寻常的案例。
一种解决方案是在加载所述登录组件时检查应用程序的路由。
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
}
}