我最近试图重构一些代码并遇到了一个我不明白的问题。我有一个导出微调器的共享模块:
@NgModule({
...snip...
exports: [ ...snip..., Spinner, ....snip....]
}
export class SharedModule { }
然后我将此模块导入其他模块。我搬到儿童路线时遇到了一个问题
其他模块:
import { NgModule } from '@angular/core';
import { SharedModule } from 'app/shared/shared.module';
import { Component} from './component';
@NgModule({
imports: [
SharedModule,
OtherRoutingModule
],
declarations: [Component]
})
export class OtherModule { }
路由模块:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { Component} from './component';
import { OneComponent } from './one/one.component";
const routes: Routes = [
{
path: '',
component: Component,
children: [
{
path: '',
redirectTo: 'one',
pathMatch: 'full'
},
{
path: 'one',
component: OneComponent
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
declarations: [
OneComponent
]
})
export class OtherRoutingModule { }
我的问题是:如果我尝试在<spinner></spinner>
中使用Spinner组件(Component
),它会起作用,但如果我尝试在OneComponent
内使用它,我会收到错误:
错误错误:未捕获(承诺):错误:模板解析错误:&#39;微调器&#39;不是一个已知的元素
Component <- using spinner here works
OneComponent <- Using spinner here causes error
如果我声明模块中的所有组件,而不是路由模块,它可以工作,直到我从路由模块声明子组件我得到了问题。由此我假设它与继承有关,但我不明白为什么 - 我相信我也可以通过在路由模块中导入SharedModule
来解决它,但这似乎有点过头了当路由模块是模块的扩展(OtherModule
)
任何帮助都将不胜感激。
修改 https://stackblitz.com/edit/angular-yjckdu
链接到示例。在示例中,如果将<app-spinner></app-spinner>
添加到组件OtherOne
(app / other / other-one / other-one.component.html),它将失败,但是在组件中声明时它可以正常工作(OtherComponent
)
关于命名惯例的道歉,我应该选择其他词......