我如何使用角度路由重定向用户

Posted

技术标签:

【中文标题】我如何使用角度路由重定向用户【英文标题】:how I can redirect user with angular routing 【发布时间】:2020-05-11 22:55:52 【问题描述】:

当我尝试转到 myaddress/home 时,我收到了错误消息。当用户输入地址行 myaddress/home 时,需要将他重定向到 myaddress/home/allQuestions。另一条路线有效。我使用角度 8。

常量路线:路线= [ 路径:'',组件:MainLayoutComponent,孩子:[ path: '', redirectTo: '/login', pathMatch: 'full', 路径:'登录',组件:LoginFormComponent, 路径:'注册',组件:RegistrationFormComponent ] , 路径:'home',组件:HomeLayoutComponent,孩子:[ path: '', redirectTo: '/allQuestions', pathMatch: 'full', 路径:'allQuestions',组件:AllQuestionsComponent, 路径:'addQuestion',组件:AddQuestionComponent, ], canActivate: [AuthenticationGuard] ];

错误:

ERROR 错误:未捕获(在承诺中):错误:无法匹配任何路由。 URL 段:'allQuestions'
错误:无法匹配任何路由。 URL 段:'allQuestions'

【问题讨论】:

【参考方案1】:

现在使用您的代码,角度路由器,将尝试用 /login 替换漏洞路由地址 (/home)。

要将地址设置为redirectTo,不能使用/

改变第二行

...
 path: 'home', component: HomeLayoutComponent, children: [
          path: '', redirectTo: '/allQuestions', pathMatch: 'full',
...

到这里

path: '', redirectTo: 'allQuestions', pathMatch: 'full',

Bug 修复代码

const routes: Routes = [
      
        path: '', component: MainLayoutComponent, children: [
          path: '', redirectTo: 'login', pathMatch: 'full',
          path: 'login', component: LoginFormComponent,
          path: 'registration', component: RegistrationFormComponent
        ]
      ,
       path: 'home', component: HomeLayoutComponent, children: [
          path: '', redirectTo: 'allQuestions', pathMatch: 'full',
          path: 'allQuestions', component: AllQuestionsComponent,
          path: 'addQuestion', component: AddQuestionComponent,
        ], canActivate: [AuthenticationGuard] 
      
    ];

下一步

修复此代码后,请确保更改加载组件的方式并考虑使用延迟加载。

我的意思是,例如出于授权目的,您可以拥有 AuthModule,该模块可以拥有自己的 auth-router.module.ts,其中包含 auth 模块的路由信息​​(如 /signin 和 /signup )。这样,只有当去那里的路由调用时,模块才会加载!

【讨论】:

以上是关于我如何使用角度路由重定向用户的主要内容,如果未能解决你的问题,请参考以下文章

使用查询字符串在新服务器上重定向的角度路由

如何将角度应用程序从keycloak登录重定向到特定路线

如何从春季启动重定向/转发角度页面?

Laravel 8 Jetstream如何在重置密码后将用户重定向到自定义路由

在角度 UI 路由器中单击时重定向到相应的单个产品页面

如何在角度 CLI 中接收当前路由响应?