【问题标题】:Is it mandatory to associate a route to a component in Angular是否必须将路由关联到 Angular 中的组件
【发布时间】:2019-09-26 07:53:32
【问题描述】:

我是 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 找到组件工厂

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

【问题讨论】:

  • 简单的答案是,不。不必在您创建的每个组件上定义路由。至于你得到的报错信息,看看this answer能不能帮你调试。
  • 这个问题很难理解。听起来您指的是具有两个路由的两个模块,但仅显示一个路由配置。您还指的是删除“子组件”路由,但没有解释为什么需要删除它。
  • 它必须被移除,因为与组件关联的 Route 必须被移除

标签: angular ngx-admin


【解决方案1】:

组件与路由关联不是强制要求。

根据 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.

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

【讨论】:

  • 感谢您的回答,但问题不在于 Route 是否可以在没有组件的情况下生存,而是组件是否可以在没有 Route 的情况下生存。我现在编辑了我的问题
  • 我编辑了帖子以回答您的问题:组件与路由关联不是强制性的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
相关资源
最近更新 更多