Проект Angular забыли пароль Отправить ссылку электронной почты не работает в браузере Chrome (только первый раз. Второй раз работает как положено) - PullRequest
0 голосов
/ 23 апреля 2020

Я занимаюсь разработкой приложения angular6 и развернул его с помощью домена lime "www.mydomain.com/".

Все маршруты работают нормально, как "www.mydomain.com/dashboard", "www.mydomain.com/products" и др. c .,

Проблема в том, что у нас есть смена пароля для ссылки, это как "www.mydomain.com/mga/sps/authsvcurn: ibm: security: authentication / changePassword". (Ссылка отправляет почту OTP на наш почтовый идентификатор, который используется для входа в приложение, и ожидает обновления OTP)

Я использовал ссылку, чтобы перенаправить изменить пароль. Но он не будет перенаправлять переход на домашнюю страницу только "www.mydomain.com/" из-за маршрутизации в том же домене.

update

Проблема возникает только впервые chrome только браузер . Когда я вхожу в первый раз, нажмите кнопку «Изменить пароль», ссылка активируется, но через несколько секунд происходит перенаправление на домашнюю страницу.

Второй раз, если я нажимаю ту же кнопку, ссылка перенаправляет на правильную страницу ( см. пароль на странице URL).

Как решить эту проблему? Пожалуйста, помогите мне.

Вот код:

my-profile.component. html

<a (click)="changePassword()">Change Password</a>

my-profile.component.ts

changePassword() { window.location.href = 'www.mydomain.com/mga/sps/authsvcurn:ibm:security:authentication/changePassword'; }

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Вы уже пробовали Angular Router?

import { Router } from '@angular/router';

constructor(
    private router: Router
  ) { }

changePassword() {
    this.router.navigate(['/myURL', { myParamName: myParamValue }]);
  }

В целевом компоненте:

import { ActivatedRoute, ParamMap } from '@angular/router';

  constructor(
    private route: ActivatedRoute
  ) { }

public ngOnInit() {
    this.route.paramMap
      .subscribe((params: ParamMap) => {
        const myParamValue = params.get('myParamName');
        if (myParamValue) {

        }
    });
}
1 голос
/ 23 апреля 2020

Вы можете изменить свой changePassword() метод на:

<a (click)="changePassword($event)">Change Password</a>


changePassword(event) {
    window.location.href = 'www.mydomain.com/mga/sps/authsvcurn:ibm:security:authentication/changePassword';
    event.preventDefault();
 }

В качестве альтернативы вы можете использовать window.open:

// _blank is optional, it opens the url in a new window. 
// You can omit if you want to navigate from the current window.

window.open("https://google.com/","_blank");


ОБНОВЛЕНИЕ

Другие пункты, которые могут помочь при отладке:

1 - включить трассировку маршрутов (в app-routing.module.ts):

imports: [
    RouterModule.forRoot(
      routes,
      { enableTracing: true } // <-- for debugging purposes only
    )
]

Это будет напечатано на консоли DevTools все маршруты Angular посещений.
Это дает вам некоторое представление о том, почему первый раз не работает.

Я могу предположить, что целевой маршрут или необходимые параметры не определены должным образом, и маршрутизация Angular не может сопоставить его с каким-либо настроенным путем, перенаправляя на /home.

2. - Если решение Stackblitz невозможно, можете ли вы указать все задействованные маршруты и все соответствующие параметры при запуске перенаправления?

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