Javascript 如何将查询参数添加到guard中的route并将其传递给Angular 4中的组件?

Javascript 如何将查询参数添加到guard中的route并将其传递给Angular 4中的组件?,javascript,angular,angular-routing,Javascript,Angular,Angular Routing,我在angular 4应用程序中使用route guard,如果条件满足并返回true,我想向路由添加一个查询参数 这是我一直在研究的代码 @Injectable() export class ViewGuardService implements CanActivate { constructor(private router: Router) { } canActivate(activatedRoute: ActivatedRouteSnapshot, snapshot: Rou

我在angular 4应用程序中使用route guard,如果条件满足并返回true,我想向路由添加一个查询参数

这是我一直在研究的代码

@Injectable()
export class ViewGuardService implements CanActivate {

  constructor(private router: Router) { }

  canActivate(activatedRoute: ActivatedRouteSnapshot, snapshot: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    if(!this.router.url.includes('/order-management')) {
      //ADD PARAMS TO ROUTE OR PASS DATA TO COMPONENT HERE AND THEN RETURN TRUE
       return true;
    } else {
       this.route.navigate['/login'];
       return false;
    }
  }
}
@Injectable()
导出类ViewGuardService实现CanActivate{
构造函数(专用路由器:路由器){}
canActivate(activatedRoute:ActivatedRouteSnapshot,snapshot:RouterStateSnashot):可观察的|承诺|布尔值{
如果(!this.router.url.includes('/order management')){
//在此处添加参数以路由或向组件传递数据,然后返回TRUE
返回true;
}否则{
this.route.navigate['/login'];
返回false;
}
}
}
通常,要导航到带有参数的路由,我们可以将其用作
this.router.navigate(['/order management',activatedRoute.url[0].path],{queryParams:{moveToOrders:true})。但是如果我在
if
条件中使用这个条件,它会变成一个无限循环的函数调用


那么,如何将参数或数据从防护传递到组件?请帮我解决这个问题。

你好,质子星光,你找到答案了吗?我需要同样的东西,但我找不到任何答案morning@MartinStievenart我找不到任何解决办法。但有一点小技巧对我有用。如果条件为
true
,则在
localStorage
ngrx
状态中设置所需的数据,并在所需的组件中检索它。好的,从技术上讲,这不是我需要实现的,我需要在每个页面中传递一个查询字符串参数,如果它在某一点上存在。无论如何谢谢你