我正在开发一个angular6应用,并以域名lime "www.mydomain.com "部署。
所有的路由都能正常工作,如 "www.mydomain.comdashboard","www.mydomain.comproducts "等。
问题是我们有一个改变密码的链接,它像 "www.mydomain.commgaspsauthsvcurn:ibm:security:authenticationchangePassword"。(该链接正在向我们的邮件id发送OTP邮件,该邮件id用于登录应用程序并等待更新OTP)
我用链接重定向改密码。但它不会重定向它的主页只有 "www.mydomain.com",因为路由相同的域名。
这个问题是发生在唯一的 仅限首次使用Chrome浏览器. 当我第一次登录时点击 "更改密码 "按钮,链接被触发,但几秒钟后重定向到主页。
第二次如果我点击同样的按钮,链接就会重定向到正确的页面(更改密码URL页面)。
我怎样才能解决这个问题?请帮我解决这个问题。
以下是代码。
<a (click)="changePassword()">Change Password</a>
changePassword() {
window.location.href = 'www.mydomain.com/mga/sps/authsvcurn:ibm:security:authentication/changePassword';
}
你是否已经尝试过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) {
}
});
}
你可以改变你的 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解决方案不可能,你能不能提供你所有涉及的路由以及触发重定向时涉及的所有相关参数?