角度网址重定向

时间:2019-01-28 13:09:03

标签: angular typescript

  

当用户输入 home tab-navigation 应用程序时,必须进入登录页面。

const appRoutes: Routes = [
  {
    path: 'tab-navigation',
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path: 'home',
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path: '',
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path: '**',
    redirectTo: 'error404',
  }
];

当输入为``或类似'dfd45657d'之类的东西时,此逻辑起作用。为什么不为家庭和Tab导航工作?

3 个答案:

答案 0 :(得分:2)

首先,您需要创建关联组件以进行登录。

第二,matchpath在这里不影响您。因此无论您保留与否,都没有效果。

尝试一下:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LoginComponent } from '../login/login.component';

const routes: Routes = [
  {
    path: 'tab-navigation',
    redirectTo: 'login'
  },
  {
    path: 'home',
    redirectTo: 'login'
  },
  {
    path: '',
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path : 'login',
    component : LoginComponent
  },
  {
    path: '**',
    redirectTo: 'error404',
  }
];
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})

export class RouteModule { }

工作链接:https://stackblitz.com/edit/angular-nbajga?file=src%2Fapp%2Froute%2Froute.module.ts

答案 1 :(得分:1)

如果您的路由中有登录网址,我猜想是由于login与'**'匹配,可能与两次成功重定向有关。

但是如果您确实没有添加登录网址,则可能需要添加一个...

const appRoutes: Routes = [
  {
    path: 'tab-navigation',
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path: 'home',
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path: '',
    redirectTo: 'login',
    pathMatch: 'full'
  },
 {
    path: 'login',
    component: 'loginComponent',
  },
  {
    path: '**',
    redirectTo: 'error404',
  }
];

答案 2 :(得分:0)

尝试

const appRoutes: Routes = [
  {
    path: 'tab-navigation',
    redirectTo: '',
    pathMatch: 'full'
  },
  {
    path: 'home',
    redirectTo: '',
    pathMatch: 'full'
  },
  {
    path: '',
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path: '**',
    redirectTo: 'error404',
  }
];