angular4如何管理导航?

发布于 2022-09-06 12:23:53 字数 177 浏览 15 评论 0

  1. 使用angular的路由时,在页面点击了一个路由链接后会转到目标组件,而且浏览器上的url也是跟着变的。如果手动在浏览器上修改相同链接,发现不能跳转到目标组件。我知道是浏览器去访问服务器的url了,所以不能转到目标组件。那么如何让angular阻止在浏览器上的跳转?
  2. 或者说有什么方法来管理导航?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

司马昭之心 2022-09-13 12:23:53

angular针对你说的这个情况提供了解决方案了,
router里面提供了两个接口[canActivate][1][CanDeactivate][2]

你可以根据你自己的需求,实现这两个接口,并配置在router里面,这两个接口就相当于router的guard,在跳转之前先调用你的处理逻辑。

这是官方的例子:

class UserToken {}
class Permissions {
  canDeactivate(user: UserToken, id: string): boolean {
    return true;
  }
}

@Injectable()
class CanDeactivateTeam implements CanDeactivate<TeamComponent> {
  constructor(private permissions: Permissions, private currentUser: UserToken) {}

  canDeactivate(
    component: TeamComponent,
    currentRoute: ActivatedRouteSnapshot,
    currentState: RouterStateSnapshot,
    nextState: RouterStateSnapshot
  ): Observable<boolean>|Promise<boolean>|boolean {
    return this.permissions.canDeactivate(this.currentUser, route.params.id);
  }
}

@NgModule({
  imports: [
    RouterModule.forRoot([
      {
        path: 'team/:id',
        component: TeamCmp,
        canDeactivate: [CanDeactivateTeam]
      }
    ])
  ],
  providers: [CanDeactivateTeam, UserToken, Permissions]
})
class AppModule {}
山田美奈子 2022-09-13 12:23:53

前后端分离,分开部署,使用nginx部署angular

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文