Javascript Angular 6从url中删除查询字符串

Javascript Angular 6从url中删除查询字符串,javascript,angular,angular-routing,Javascript,Angular,Angular Routing,范例 决心 http://localhost:4200/login?aUasas129198 如果我想在“?”之后输入值,该怎么办 我试过了 http://localhost:4200/login 但它不起作用 我也试过了 { path: 'login/:id', component: LoginComponent }, 但它们都返回空对象。现在我该怎么办请帮助实际上,您没有在任何键中传递值: console.log(this.route.snapshot.queryParams); co

范例

决心

http://localhost:4200/login?aUasas129198
如果我想在“?”之后输入值,该怎么办

我试过了

http://localhost:4200/login
但它不起作用

我也试过了

{ path: 'login/:id', component: LoginComponent },

但它们都返回空对象。现在我该怎么办请帮助

实际上,您没有在任何键中传递值:

console.log(this.route.snapshot.queryParams);
console.log(this.route.snapshot.params);
正确的方法应该是:

http://localhost:4200/login?aUasas129198
如果您使用的URI如问题中所示:

http://localhost:4200/login?anykey=aUasas129198
// get it as
// this._ActivatedRoute.queryParams.subscribe()
然后,您应该将值传递给id,如下所示:

{ path: 'login/:id', component: LoginComponent }

如果Angular立即重定向并丢失查询参数是不可避免的,您可以订阅路由器事件,并在每个
NavigationStart
for
login
route上获得路由或在它们在重定向中丢失之前,然后,您可以将其传递给服务,并对其执行任何您想执行的操作

或者,作为另一种选择,您可以考虑使用
queryParamsHandling:“preserve”
配置路由器,在这种情况下,它应该将查询参数传递到下一个路由(有关此方面的更多信息,请参阅下面链接的Angular docs中的部分)

我曾在Angular 5,IIRC中使用过查询参数的项目,我认为它不会自行重定向,所以我建议您查看项目中的其他地方,但我可能错了

另见
  • 在有角度的文档中

  • 关于堆栈溢出


但是,您是否仍然在url中看到查询参数?执行
login/:id
使id成为
queryParam
。您还应该使用
this.route.queryParams.subscribe(queryParams=>console.log(queryParams))
此外,显然您指定的queryParam没有任何值。不,查询参数消失,我无法解释“?”之后的部分来自另一个解决方案,我需要解释“?”之后的数据。我没有任何选择在这种情况下使用
param
而不是
queryParam
。还要确保订阅
route.params
而不是使用
route.snapshot.params
订阅route.params返回空对象,正如我在评论中所说的,我无法更改url结构。在angular中有没有一种方法可以在没有正确的查询参数键的情况下解释url?@SanjayIdpuganti正如您所说,我不能更改“?”之后的部分,但您可以在
之前更改。
http://localhost:4200/login/aUasas129198
// remember the '/' after the login that you didn't use.
// get it as
// this._ActivatedRoute.snapshot.params.id