Angular 角度:导航后获取原点

Angular 角度:导航后获取原点,angular,angular-routing,Angular,Angular Routing,再见 我有以下(简单的)问题。我有两个组件导航到一个组件中的一个组件,我想知道导航来自哪个组件,以便我可以相应地采取行动(在本例中是否刷新列表)。问题是两个组件的url都是相同的 // Component: ToolbarComponent // URL: /products/123 navigateBack() { this.router.navigate(['/products']); } - - 我认为上面的简化代码提供了一个很好的示例,说明了我想要实现的目标 提前谢谢 编辑

再见

我有以下(简单的)问题。我有两个组件导航到一个组件中的一个组件,我想知道导航来自哪个组件,以便我可以相应地采取行动(在本例中是否刷新列表)。问题是两个组件的url都是相同的

// Component: ToolbarComponent
// URL: /products/123
navigateBack() {
  this.router.navigate(['/products']);    
}
-

-

我认为上面的简化代码提供了一个很好的示例,说明了我想要实现的目标

提前谢谢


编辑:我不希望源代码在url中可见。

您可以使用查询参数进行处理,否则服务类将跟踪用户的来源


这个.u router.navigate(['/products'],{queryParams:{from:'viewname'}})

正如@Suresh提供的,您可以使用queryParams。这个解决方案的问题是,它会用不必要的参数污染URL

您可以改为使用共享服务,在其中存储呼叫者:

导出类共享服务{
...
导航回退(调用方:任意){
this.caller=caller;
this.router.navigate(['/products']);
}
}
在您的组件中:

navigateBack(){
this.sharingService.navigateBack(this);
}
现在,您可以在以前的组件中测试调用方是否是以下任一组件的实例:

ngOnInit(){
如果(组件一的this.sharingService.caller实例){…}
如果(组件二的this.sharingService.caller实例){…}
}

很抱歉没有提及,我不希望它在URL中可见,然后您可以使用服务方法。创建一个属性在重定向访问之前在所需位置的服务值中设置值由于这应该可以完成工作,我尝试不使用服务,因为做这样一个简单的工作似乎有点过分。服务的目的是处理组件之间的这种通信。但是你的项目,你的选择,很高兴你解决了你的问题啊,我是新来的,所以必须要有正确的心态。
// Component: ProductDetailComponent
// URL: /products/123
navigateBack() {
  this.router.navigate(['/products']);    
}
// Component: ProductsComponent
// URL: /products
public constructor() {
  this.navigationSubscription = this.router.events.subscribe((e: any) => {
        if (e instanceof NavigationEnd && 
            e.urlAfterRedirects.endsWith('products')) {
            // Here i want to know the origin, ToolbarComponent or ProductDetailComponent
        }
}