如何使用路由参数将URL发送到Angular项目?

时间:2019-04-30 18:27:59

标签: angular email angular-ui-router

我正在创建一个小的应用程序来注册用户。为此,我向确认的电子邮件发送确认电子邮件,例如: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/#/,而发送到电子邮件的链接中没有参数。

1 个答案:

答案 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时,它将使用您的自定义序列化程序进行解析和序列化。