角度-处理未知路线以确定行为

时间:2019-11-22 13:42:06

标签: angular angular-router

我正在使用Angular 6开发应用程序,并且需要处理我的应用程序中的未知路由。

例如:

Instagram有一个默认页面(instagram.com),但是如果您编写(instagram.com/user),他们会将您重定向到用户个人资料,因此我需要在{{ 1}}应用程序。

跟随我的路线:

Angular

默认情况下,我的应用程序重定向到const APP_ROUTES: Routes = [ { path: '', redirectTo: 'home', pathMatch: "full" }, { path: 'home', component: HomeComponent }, { path: "login", component: LoginComponent }, { path: "in-development", component: InDevelopmentComponent }, { path: "**", component: DefaultPageComponent } ]; export const routing: ModuleWithProviders = RouterModule.forRoot(APP_ROUTES, { useHash: true }); ,但是我想重定向到/home,如果我键入:DefaultPageComponent并获得整个localhost:4200/pedro(包括{ {1}}。

感谢所有帮助!

2 个答案:

答案 0 :(得分:1)

您必须在带通配符(**)的前面加上一个带参数的路由。这样的事情应该起作用:


    const APP_ROUTES: Routes = [
      {
        path: '', 
        redirectTo: 'home',
        pathMatch: "full"

      },
      {
        path: 'home',
        component: HomeComponent
      },
      {
        path: "login",
        component: LoginComponent
      },
      {
        path: "in-development",
        component: InDevelopmentComponent
      },
      { path: ':userName', component: UserPage },
      {
        path: "**",
        component: DefaultPageComponent
      }

    ];

    export const routing: ModuleWithProviders = RouterModule.forRoot(APP_ROUTES);

顺序很重要:始终先放置更具体的路线(否则您将无法到达它们)。

我还建议您像这样对用户路由命名空间:

{ path: 'users/:userName', component: UserPage },

答案 1 :(得分:-1)

这对我有用

{
  path: '**',
  loadChildren: () => import('./path/to/your/component.module').then(m => m. DefaultPageComponentModule),
}