我在制作模式下运行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都工作正常但没有导航。 知道为什么这只发生在生产模式吗?
附加说明:
答案 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来取消任何导航。