如何解决无法绑定属性,因为它是按钮的未知属性
我有一个问题,我有一个名为 CoreModule
的模块,它被导入到 AppModule
中,我试图在某个子模块中使用这个模块,但是如果我在子模块中导入该模块当我转到该模块中的某个组件时,它会出现此错误 CoreModule has already been loaded. Import Core modules in the AppModule only.
。
如果我不在子模块中导入 CoreModule
,则会出现以下错误:Can't bind to 'ngxHasAnyRole' since it isn't a kNown property of 'button'
我的 AppModule
中的导入看起来像这样
imports: [
browserModule,browserAnimationsModule,HttpClientModule,AppRoutingModule,NbSidebarModule.forRoot(),NbMenuModule.forRoot(),NbDatepickerModule.forRoot(),NbDialogModule.forRoot(),NbWindowModule.forRoot(),NbToastrModule.forRoot(),CoreModule.forRoot(),ThemeModule.forRoot(),LoggerModule.forRoot({
level: NgxLoggerLevel.INFO,enableSourceMaps: true
}),],
我的CoreModule
看起来像这样
...
@NgModule({
imports: [
CommonModule,exports: [
NbAuthModule,HasRoleDirective,HasAnyRoleDirective,declarations: [HasAnyRoleDirective,HasRoleDirective],})
export class CoreModule {
constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
throwIfAlreadyLoaded(parentModule,'CoreModule');
}
static forRoot(): ModuleWithProviders<CoreModule> {
return {
ngModule: CoreModule,providers: [
...NB_CORE_PROVIDERS,};
}
这是我尝试使用 CoreModule
指令的 html 部分
<button nbButton
(click)="new()"
[ngxHasAnyRole]="['ROLE_TEST','ROLE_ADMIN']"
class="table-button"
status="primary"
size="small">
NEW
<nb-icon icon="plus-outline"></nb-icon>
</button>
我不想在子模块中导入,因为它是在父模块中导入的。我该如何解决这个问题?
其他信息
当我在孩子中导入 ng serve
时执行 CoreModule
然后在 ng serve
打开时将其删除。它有效,但如果我关闭并重新开始。它不会启动。
解决方法
CoreModule
应该用于只应导入一次的内容。这些通常是从应用程序范围内的服务中导入的。绝对不应该放在 CoreModule
中的是组件、指令和管道。
这些内容应该放在 SharedModule
中。
angular 声明了几个 NgModule 类别,您可以将其用作指南:
- Domain:域 NgModule 围绕功能、业务域或用户体验进行组织。
- Routed:NgModule 的顶部组件充当路由器导航路线的目的地。
- Routing:一个路由 NgModule 为另一个 NgModule 提供路由配置。
- Service:服务 NgModule 提供实用服务,例如数据访问和消息传递。
- Widget:小部件 NgModule 使组件、指令或管道可用于其他 NgModule。
- Shared:共享的 NgModule 使一组组件、指令和管道可供其他 NgModule 使用。
我的建议是真正阅读 angular.io
上提供的优秀文档/指南那你该怎么办?从您的 HasAnyRoleDirective
中删除 HasRoleDirective
和 CoreModule
的导出和声明,并将它们放入 SharedModule
或创建一个小模块 RoleModule
并仅在必要时导入它.由你决定
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。