【问题标题】:Angular not understanding the URL containing index.html#Angular 不理解包含 index.html 的 URL#
【发布时间】:2019-02-22 15:21:40
【问题描述】:

让我描述一下我的用例。

我需要将 AngularJs 代码更改为 Angular 7。

该应用程序包含一个用于检索密码的页面。找回密码的流程如下。

  1. 检索密码表单将电子邮件作为用户输入并向服务器发送请求
  2. 服务器生成一个临时 URL 用于重置密码。并向用户发送一封包含重置密码链接的电子邮件。
  3. 电子邮件中发送的临时链接格式为https://server_address/index.html#/reset-password?uid=user_id&t=token

现在,问题是: 通过电子邮件发送的临时链接的 URL 中包含“index.html#”。但是 angular7 应用程序的基本 URL 是 http://angualar_app_url/#/。所以 Angular 无法理解地址,也无法路由到页面。

我无权访问服务器代码,所以我必须解决 仅在有角度的一侧。

谁能告诉我解决方法,以便每当用户点击通过电子邮件发送的临时链接时,我就可以路由到一个页面

【问题讨论】:

  • 为将来参考,标记帖子时,angularjs=/= angular

标签: angular angular7


【解决方案1】:

我使用了一个解决方案来解决类似的问题。即使用户打开“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

    }
  }
 }

【讨论】:

  • 谢谢@Nabil Shahid。我试过这个解决方案,效果很好。
  • 欢迎您@shivshankaralkondwar。请将答案标记为最佳答案,以便将其关闭,其他用户可以认为它是合法的。
猜你喜欢
  • 1970-01-01
  • 2018-09-06
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 2021-02-13
  • 2017-12-26
相关资源
最近更新 更多