Angular не понимает URL, содержащий index.html # - PullRequest
0 голосов
/ 22 февраля 2019

Позвольте мне описать мой вариант использования.

У меня есть требование изменить код AngularJs на angular 7.

Приложение содержит страницу для получения пароля.Процесс получения пароля выглядит следующим образом.

  1. Форма получения пароля принимает электронную почту от пользователя и отправляет запрос на сервер
  2. Сервер генерирует временный URL-адрес для сброса пароля.и отправляет электронное письмо пользователю, содержащее ссылку для сброса пароля.
  3. Временная ссылка, отправленная по электронной почте, имеет формат https://server_address/index.html#/reset-password?uid=user_id&t=token.

Теперь проблемаis: Временная ссылка, отправленная по электронной почте, содержит «index.html #» в URL.Но базовый URL-адрес приложения angular7 http://angualar_app_url/#/. Так что Angular не может понять адрес и не может перенаправить на страницу.

У меня нет доступа к коду сервера, поэтому у меня естьработать только на угловой стороне.

Может кто-нибудь сказать мне обходной путь, чтобы я мог перенаправить на страницу всякий раз, когда пользователь нажимает на временную ссылку, отправленную по электронной почте

1 Ответ

0 голосов
/ 22 февраля 2019

Я использовал решение, чтобы исправить подобную проблему.Даже пользователь откроет "https://server_address/index.html#/reset-password?uid=user_id&t=token",, конструктор вашего модуля начального уровня, который в основном называется app.module.ts, обязательно выполнится. Что вы должны сделать, так это в этом конструкторе, проверьте URL-адрес и, если это пароль сбросаurl, перенаправьте пользователя на правильный маршрут, используя угловой маршрутизатор, как показано ниже:

В вашем app.module.ts (или как вы его назвали)

export class AppModule {
  constructor(private router:Router){
    if(location.href.indexOf("index.html/#/reset-password")>-1){     
        this.router.navigateByUrl('/resetpassword'); //the path where you actually want to navigate your user

    }
  }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...