Как отправить URL в проект Angular с параметрами маршрута? - PullRequest
0 голосов
/ 30 апреля 2019

Я создаю небольшое приложение для регистрации пользователей. Для этого я отправляю подтверждение по электронной почте на зарегистрированный адрес электронной почты, например: hello@world.com

Проблема в том, что URL-адрес подтверждения содержит токен в параметрах URL, например: domain.net/#/reset-password/lajcNE9kasmlmkdas4359301fasldkm

Когда я получаю электронное письмо и затем нажимаю на ссылку, мое приложение Angular загружается без параметров.

Я уже пытался сделать это с помощью параметров запроса, например, так: domain.net/#/reset-password?token=lajcNE9kasmlmkdas4359301fasldkm

и до сих пор не работает

Я вставляю ActivatedRoute из @ angular / router в конструктор компонента

constructor(public route: ActivatedRoute) { }

Это код, который я использую для получения параметров маршрута.

this.route.params.subscribe(params => { if (params['token']) { } })

Я ожидаю получить токен из URL-адреса, но токен имеет значение null, а URL-адрес в браузере просто domain.net/#/ без параметров, присутствующих в ссылке, отправленной на электронное письмо.

1 Ответ

1 голос
/ 30 апреля 2019

Вы можете создать собственный настраиваемый сериализатор URL, реализовав класс UrlSerializer.

Пользовательский URL-сериализатор

Создайте пользовательский сериализатор URL следующим образом:

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, он будет использовать ваш собственный сериализатор для анализа и сериализации.

...