Angular 标记中的斜杠不能在4的url中使用

Angular 标记中的斜杠不能在4的url中使用,angular,routing,Angular,Routing,在angular 4中,为了确认电子邮件,我在url中使用了可能有斜杠的标记,如果有斜杠,它会重定向到主页。这个问题的解决办法是什么 这是我的路线: const routes: Routes = [{path: 'confirm-email/:userIdCode', component: ConfirmEmailComponent}] @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] })

在angular 4中,为了确认电子邮件,我在url中使用了可能有斜杠的标记,如果有斜杠,它会重定向到主页。这个问题的解决办法是什么

这是我的路线:

const routes: Routes = [{path: 'confirm-email/:userIdCode', component: 
ConfirmEmailComponent}]
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
这是我的电子邮件确认组件:

export class ConfirmEmailComponent implements OnInit {
constructor(private route: ActivatedRoute, private signupService: 
SignUpService) {}

 private url: string;
 private userId: any;
 private code: any;

ngOnInit(): void {
this.route.params.subscribe(params => {
  this.url = params['userIdCode'];
  const splitted = this.url.split('|');
  this.userId = splitted[0];
  this.code = splitted[1];
  this.signupService.sendConfirmEmailData(this.userId).subscribe( result => 
  console.log(result));
 });
 }
 }

谢谢。

将斜杠传递到url时,需要对其进行编码。例如,假设您的令牌是
12/34
。应将其编码为
12%2F34
。因此,最终您的url是
/确认电子邮件/12%2F34
。现在,当angular拉入参数(例如使用this.activatedRoute.paramMap)时,它将自动解码并提供参数
12/34


这是一个演示程序。

在将斜杠传递到url时,需要对其进行编码。例如,假设您的令牌是
12/34
。应将其编码为
12%2F34
。因此,最终您的url是
/确认电子邮件/12%2F34
。现在,当angular拉入参数(例如使用this.activatedRoute.paramMap)时,它将自动解码并提供参数
12/34


这是一个演示。

从令牌中删除斜杠您是指在服务器中?从令牌中删除斜杠您是指在服务器中?感谢您的演示,但我不明白如何对令牌进行编码,因为我不知道它是什么。在您的演示中,您分配了令牌12/34,但当我不知道它是什么时,我如何才能写入应用程序模块“rediredTo:”?@AmirGh在真实世界的应用程序中,您不会让通配符路由(
***
)指向确认电子邮件路由。它会指向某种404页面。谢谢你的演示,但有一个问题我不知道如何对令牌进行编码,我不知道它是什么。在您的演示中,您分配了令牌12/34,但当我不知道它是什么时,我如何才能写入应用程序模块“rediredTo:”?@AmirGh在真实世界的应用程序中,您不会让通配符路由(
***
)指向确认电子邮件路由。它会指向某种404页面。