当用户使用Angular 6在地址栏中手动更改时,请使用api中的真实值替换URL中的参数

时间:2019-06-13 12:04:41

标签: javascript angular typescript angular6

可以说,我有网址,

http://localhost:4200/param1/param2/product

此处param1,param2是api中的参数实数值。如果用户手动更改地址栏中的参数值并重新加载页面。参数的值应替换为api中的实际值(param1,param2)。请为我建议实现此目标的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用CanActivate路由防护。 在后卫操作中,您将检查api结果,并且可以根据需要重定向。

这是一个简单的代码,用于检查用户在url中键入的参数。 当然,您可以通过调用api来验证此参数。

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
  const idParam: number = +next.paramMap.get('id');
  if (idParam === 3) {
    this.router.navigateByUrl('/hello/1');
    return false;
  } else {
    return true;
  }
}
  

这里是Stackblitz DEMO,向您展示这个想法(注意网址)。