如何在角度2中使用单独的登录组件布局?

Has*_*mad 10 angular2-routing angular

我是棱角分明的新人.我创建一个登录组件,它工作正常,但问题是我想从整个应用程序登录单独的布局.需要进行哪些更改?

我在google上搜索但是每个人都给出了差异解决方案,这也是不可理解的.

const appRoutes: Routes = [
{ path: 'alert/:id', component: AlertDetailComponent },
{ path: 'alerts', component: AlertsComponent },
{ path: 'dashboard', component: EriskDashboardComponent },  
{ path: '', redirectTo: '/dashboard', pathMatch: 'full' },
{ path: 'login', component: LoginComponent },  
];
Run Code Online (Sandbox Code Playgroud)

在app.component.html中

<!-- page content -->
<div class="right_col" role="main">
    <router-outlet></router-outlet>           
</div>
<!-- /page content -->
Run Code Online (Sandbox Code Playgroud)

cut*_*ind 15

在你的app.component.html:

<router-outlet></router-outlet>
Run Code Online (Sandbox Code Playgroud)

然后创建MainComponent (main.component.ts)并将所有主要应用布局放入main.component.html:

<!-- page content -->
<div class="right_col" role="main">
    <router-outlet></router-outlet>           
</div>
<!-- /page content -->
Run Code Online (Sandbox Code Playgroud)

此组件将是每个常规应用程序组件的父组件.

然后在您的LoginComponent中放置不同的布局而不使用router-outlet,例如:

<div class="login-wrapper">
  <div class="login">
   ... your login layout
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后修改您的路由是这样的:

const appRoutes: Routes = [
  {path: 'login', component: LoginComponent},
  {path: '', component: MainComponent, redirectTo: '/dashboard', pathMatch: 'full',
    children: [
      { path: 'alert/:id', component: AlertDetailComponent },
      { path: 'alerts', component: AlertsComponent },
      { path: 'dashboard', component: EriskDashboardComponent }
  ]}];
Run Code Online (Sandbox Code Playgroud)

因此,MainComponent将包含任何子组件的所有可重用布局和应用程序结构,而LoginComponent是独立的,并且它有自己的布局.

  • @cutoffurmind 这个答案导致“错误:路由''的配置无效:redirectTo和子项不能一起使用”。更新后的版本会是什么? (4认同)
  • 来这里发布这个解决方案.这样做的好处是只需要AuthGuard一个页面来隐藏未经身份验证的用户的整个应用程序的其余部分. (2认同)