我对Angular(版本5)有一个奇怪的问题,我在其中设置了一些像角度一样的路线:
{path: 'calendar', canActivate: [AuthGuard], component: ProjectsComponent }
{path: 'map', canActivate: [AuthGuard], component: MapComponent }
然后在我的网页标题中有一些按钮将激活这些路线。
<li routerLinkActive="active"><a [routerLink]="['/calendar']">Kalender</a></li>
<li routerLinkActive="active"><a [routerLink]="['/map']">Kaart</a></li>
一切都适合/日历但是/ map有问题。 首先点击/映射按钮加载组件,然后组件向服务器api发送一个获取请求以获取一些数据,并发送令牌进行身份验证,不用担心。
当我刷新(或手动输入localhost:3000 / map)时,角度应用程序不会拾取路径,而是将空的GET请求发送到服务器,绕过角度路由。 所以yes / map是一个有角度的路由,但也可以作为服务器上的get请求。当我将服务器端路由名称更改为其他名称时,不会发生此行为,因此它确实与名称相同。我认为名称相似性不应该是一个问题,因为角度应该首先选择那些网址请求?或者不是?
AuthGuard(纯粹检查用户是否登录到客户端,后端是否受到每个请求的身份验证):
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService,
private router: Router) {}
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if (this.authService.isLoggedIn()) {
return true;
} else {
this.router.navigate(['auth', 'login']);
return false;
}
}
}
答案 0 :(得分:1)
因此,据我所知,您应该使用HttpClient API来调用服务器端https://angular.io/guide/http,因为这是与服务器端通信的推荐方式。
通常,前端客户端和后端应保持独立,除非您尝试创建在客户端和服务器端都提供内容的同构应用程序,这会增加复杂性。
答案 1 :(得分:0)
这是应用程序时的后端问题(我猜)。你有两个选择:
R_GetCCallable("stochvol", "update");
上重定向,因此后端的任何URL都将始终重定向到基本应用程序URL,并且前端实际上将相应地读取路由。请参阅官方文档链接:
编辑:更详尽地阅读您的帖子,看起来有点奇怪,我不知道我的答案是否是您问题的解决方案。我现在就这样说吧......也许它会有所帮助。如果没有,我会删除这个答案。