我是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声明部分中都添加了SubComponent参考。 但我得到:找不到SubComponent的组件工厂
真正的问题。组件必须有一条路线吗? 组件可以在没有路线的情况下生存吗?
答案 0 :(得分: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.
组件可以像您通常要路由到的页面那样使用。在这些情况下,您会将它们与路线关联以导航到此页面。 组件也可以是您想放入其他组件中的内容的小包装-例如,页面组件。您将尝试将一个特定的作用域封装在一个专门用于此目的的特定组件中。