子路由模块未在同一页面中加载内容

Posted

技术标签:

【中文标题】子路由模块未在同一页面中加载内容【英文标题】:Child routing module not loading the content in the same page 【发布时间】:2017-11-21 01:21:25 【问题描述】:

我正在开发使用 angular 2 指示的小型应用程序。[身份验证 + 2 个屏幕],我在管理路由参数时遇到问题。

我对路由文件、app.routing.ts 主体和子路由文件 admin.routing.ts 进行了设置,每当我成功通过身份验证时,都会进行重定向设置为 home 路径,在此页面中,我必须使用由子路由器管理的组件,每当我单击链接时,我都希望在同一屏幕上加载内容,但路由器会重新加载整个页面。

app.routing.ts

      const  appRoutes: Routes = [
      
        path: 'home',
        component : HomeComponent,
        canActivate : [AuthGard]
      ,
      
        path: 'login',
        component : LoginComponent
      ,
      
        path: 'not-found',
        component: NotFoundComponent
      ,
      
        path: '',
        redirectTo: 'login',
        pathMatch: 'full'
      ,
      
        path: '**',
        redirectTo : 'not-found',
        pathMatch: 'full'
      
  ];

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

adminRouting.ts(子)

  const  appRoutes: Routes = [

  
    path: 'add-merchant-admin',
    component : AddMerchantAdminComponent,
    canActivate : [AuthGard]
  ,
  
    path: 'list-merchant-admin',
    component : ListMerchantAdminComponent,
    canActivate : [AuthGard]
  
];

home.component.html

<app-template-component></app-template-component>
<app-sidebar-nav></app-sidebar-nav>

template.component.html

 <div class="wrapper">
  <div class="main-panel">

    <app-nav-bar></app-nav-bar>

    <div class="content">
      <div class="container-fluid">
          <router-outlet></router-outlet> ** Content expected to be loaded here  **
      </div>
    </div>

    <footer class="footer">
      <div class="container-fluid">
        <div class="copyright pull-right">
          &copy; <script>document.write(new Date().getFullYear())</script> S2M 2017
        </div>
      </div>
    </footer>

     </div>
</div>

不是在指定位置加载内容,而是加载另一个页面。

【问题讨论】:

【参考方案1】:

子路由应该是这样定义的

const  appRoutes: Routes = [
      
        path: 'home',
        component : HomeComponent,
        canActivate : [AuthGard],
        children:[
        
             path:'', 
             component:ChildComponent,
             children: appRoutesChild
         
        ]
      ,
      
        path: 'login',
        component : LoginComponent
      ,
      
        path: 'not-found',
        component: NotFoundComponent
      ,
      
        path: '',
        redirectTo: 'login',
        pathMatch: 'full'
      ,
      
        path: '**',
        redirectTo : 'not-found',
        pathMatch: 'full'
      
  ];

【讨论】:

以上是关于子路由模块未在同一页面中加载内容的主要内容,如果未能解决你的问题,请参考以下文章

我的 CSS 页面未在 codeigniter 中加载

页面未在 chrome 中加载

jQuery 中的 .load 未在 IE6 中加载 cfcharts

jQuery 未在 Django 管理主页/仪表板、登录和注销页面中加载

Android WebView 混合内容未在 api 级别 < 21 中加载

Paypal 页面未在 Android 应用程序中加载,仅显示微调器,直到我触摸屏 6.0.1