我正在创建一个小的应用程序来注册用户。为此,我向确认的电子邮件发送确认电子邮件,例如:hello@world.com
问题是确认URL包含URL参数中的令牌,例如:domain.net /#/ reset-password / lajcNE9kasmlmkdas4359301fasldkm
当我收到电子邮件,然后单击链接时,我的Angular应用程序加载时没有参数。
我已经尝试使用查询参数来做到这一点,就像这样: domain.net /#/ reset-password?token = lajcNE9kasmlmkdas4359301fasldkm
仍然不起作用
我在组件构造函数中从@ angular / router注入了ActivatedRoute
YES
这是我用来获取路径参数的代码。
constructor(public route: ActivatedRoute) {
}
我希望从URL获取令牌,但是令牌为null,浏览器中的URL只是domain.net/#/,而发送到电子邮件的链接中没有参数。
答案 0 :(得分:1)
您可以通过实现UrlSerializer类来制作自己的自定义网址序列化程序。
自定义网址序列化器
创建一个自定义网址序列化器,如下所示:
class CustomUrlSerializer implements UrlSerializer {
parse(url: string): UrlTree {
// Custom code here
}
serialize(tree: UrlTree): string {
// Custom code here
}
}
然后,您只需要提供CustomUrlSerializer来代替UrlSerializer,可以在导入两个序列化器之后将其放置在AppModule提供程序数组中。
提供者:[ {提供:UrlSerializer,useClass:CustomUrlSerializer}, ... ] 现在,当您调用router.navigate或router.navigateByUrl时,它将使用您的自定义序列化程序进行解析和序列化。