角度路由不在生产模式下工作

时间:2017-09-19 14:37:42

标签: angular

我在制作模式下运行angular4应用时遇到问题。 在开发者模式下一切正常。

我有一个应用程序,显示登录页面,进行身份验证,然后重定向执行/仪表板。 这在开发模式下工作正常,但是当激活生产模式时,登录页面进行身份验证,然后调用那些显然无效的navigateByUrl(' / dashboard')... 这里是login.component.ts onsubmit方法的代码:

this._authservice.postAuthentication(value.name, value.password)
    .subscribe(res => {
      console.log('Antes navigateByUrl');
      this.router.navigateByUrl('/dashboard');
      console.log('Depois navigateByUrl');
    },
    err => {
      console.log('Erro de Auth');
      this.onSubmitError = true;
    });
}

navigateByUrl之前和之后的console.log都工作正常但没有导航。 知道为什么这只发生在生产模式吗?

附加说明:

  • DevTools没有显示错误消息
  • 路由在路径数组上有路径:'仪表板'(并在dev上工作)
  • index.html已
  • 尝试通过直接网址访问路由不起作用。
  • 尝试过Augury,但它总是声称应用程序处于产品模式(不知道为什么,因为它不是)

4 个答案:

答案 0 :(得分:0)

请使用此方法:

this.router.navigate(['/dashboard']);

答案 1 :(得分:0)

我认为这可能与需要设置为回退到index.html并使用navigateByUrl的制作应用有关。当你输入一个新的url时,服务器将查找该目录并找不到它,因为它实际上是Angular应该使用的东西,所以你需要告诉它只是为了服务index.html而Angular路由会从那里获取它。 / p>

这是docs关于那个

设置方式取决于您托管生产应用的方式

答案 2 :(得分:0)

检查提到的路由是否是路由器模块的一部分。

答案 3 :(得分:0)

终于找到了问题!

我隐藏了一个传统的AuthGuard,并将其加载到DI上方的提供商处。

在开发模式下,加载了正确的AuthGuard,但在构建并部署在http服务器上之后,使用了传统的AuthGuard来取消任何导航。