-1

我是 Angular 的新手。我有以下文件夹/文件树:

-- app folder
  -- root (
     -- pages (pages-routing, pages-module, pages-component)
        -- page1 (page1-routing, page1-component)
           -- subcomponent (subcomponent-component)

我的页面路由是这样定义的

const routes: Routes = [{
path: '',
component: PagesComponent,
   children: [{
     path: 'page1',
     component: Page1Component,
   }, {
     path: 'subcomponent',
     component: SubComponent,
   }],
 }];

 @NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule],
 })
 export class PagesRoutingModule { }

 export const routedComponents = [
     Page1Component,
     SubComponent,
 ];

页面 NgModule

@NgModule({
  imports: [
    ThemeModule,
    PagesRoutingModule,
  ],
  declarations: [
     ...routedComponents,
  ],
  providers: [
    SmartTableService,
  ],
})

Page1 NgModule 看起来很相似:

@NgModule({
   imports: [
      ThemeModule,
      PagesRoutingModule,
      Ng2SmartTableModule,
   ],
   declarations: [
      ...routedComponents,
   ],
   providers: [
      SmartTableService,
   ],
})

这可行,但我的问题是..我想知道是否可以删除子组件的路线..因为子组件不需要真正的路线?到目前为止我所做的是尝试从页面路由中删除

{
 path: 'subcomponent',
 component: SubComponent,
}

{ 
 SubComponent,
}

我在 Pages NgModule 和 Page1 NgModule Declarations 部分都添加了 SubComponent 引用,但我得到:没有为 SubComponent 找到组件工厂

所以真正的问题。是否必须为组件提供路线?组件可以在没有路由的情况下生存吗?

4

1 回答 1

3

组件与路由相关联不是强制性的

根据 Angular Route 文档,必须将 Route 与组件一起使用。如果不直接在 Route 中设置,那么至少子 Route 必须有一个组件。

https://angular.io/api/router/Route

component?: Type<any>   
The component to instantiate when the path matches. Can be empty if child routes specify components.

组件可以用作您通常要路由到的页面之类的东西。在这些情况下,您会将它们与导航到此页面的路线相关联。组件也可以是您想要放入其他组件的小内容包 - 例如页面组件。您将尝试将特定范围封装在专门用于此目的的特定组件中。

于 2019-05-08T14:50:02.177 回答