令牌中的斜杠不能用于角度4

时间:2018-01-22 14:31:49

标签: angular routing

用于确认电子邮件的角度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));
 });
 }
 }
谢谢。

1 个答案:

答案 0 :(得分:2)

将斜杠传递给url时需要对斜杠进行编码。例如,您的令牌是12/34。这应编码为12%2F34。所以最终你的网址是/confirm-email/12%2F34。现在当角度拉入参数时(例如使用this.activatedRoute.paramMap),它将自动解码它并为您提供参数12/34

这是一个stack blitz演示。