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

San*_*nti 5 javascript angular-routing angular

例子

http://localhost:4200/login?aUasas129198
Run Code Online (Sandbox Code Playgroud)

决心

http://localhost:4200/login
Run Code Online (Sandbox Code Playgroud)

如果我想要'?'后面的值该怎么办?

我尝试做

{ path: 'login/:id', component: LoginComponent },
Run Code Online (Sandbox Code Playgroud)

但没有成功

我也尝试过

console.log(this.route.snapshot.queryParams);
console.log(this.route.snapshot.params);
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*off 2

如果 Angular 不可避免地会立即重定向您并丢失查询参数,您可以订阅路由器事件并在每个NavigationStartforlogin路由上获取路由 xe2\x80\x99squeryParamMapsnapshot.paramMap在它们之前x99re 在重定向中丢失,那么您可以将其传递给服务并执行您想做的任何操作。

\n\n

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

\n\n

我参与了一个在 Angular 5 中使用查询参数的项目,IIRC 我不\xe2\x80\x99t 认为它会自行重定向,所以我\xe2\x80\x99d 建议查看项目中的其他位置,但我可能会错误的。

\n\n

也可以看看

\n\n\n