无法绑定 属性,因为它是未知的 属性 按钮
Can't bind property since it is unknown property of button
我有一个问题,我有一个名为 CoreModule
的模块,它被导入到 AppModule
中,我试图在某些 child 模块中使用这个模块,但是如果我在 child 模块中导入模块,当我转到该模块中的某些组件时,它会出现此错误 CoreModule has already been loaded. Import Core modules in the AppModule only.
。
如果我不在 child 模块中导入 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,
],
};
}
这是 html 的一部分,我尝试使用 CoreModule
中的指令
<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>
我不想在 child 模块中导入,因为这是在 Parent 模块中导入的。我该如何解决这个问题?
附加信息
当我在 child 中导入 CoreModule
时执行 ng serve
,然后在 ng serve
打开时将其删除。它有效,但如果我关闭并重新开始。启动不了。
A CoreModule
应用于只应导入一次的内容。这些通常是从应用程序范围内的服务导入的。绝对不应该放在 CoreModule
中的是组件、指令和管道。
这些是应该放在 SharedModule
中的东西。
angular 声明了几个 NgModule 类别,您可以将其用作指南:
- Domain:领域 NgModule 是围绕功能、业务领域或用户体验组织的。
- Routed: NgModule 的顶部组件充当路由器导航路线的目的地。
- Routing: 一个路由 NgModule 为另一个 NgModule 提供路由配置。
- Service: NgModule 服务提供数据访问和消息传递等实用服务。
- Widget:小部件 NgModule 使组件、指令或管道可用于其他 NgModule。
- Shared:共享的 NgModule 使一组组件、指令和管道可供其他 NgModule 使用。
我的建议是真正阅读 angular.io
上提供的优秀 docs/guides
那么你必须做什么?从 CoreModule
中删除 HasAnyRoleDirective
和 HasRoleDirective
的导出和声明,并将它们放在 SharedModule
中或创建一个小模块 RoleModule
并仅在必要时导入它.由你决定
我有一个问题,我有一个名为 CoreModule
的模块,它被导入到 AppModule
中,我试图在某些 child 模块中使用这个模块,但是如果我在 child 模块中导入模块,当我转到该模块中的某些组件时,它会出现此错误 CoreModule has already been loaded. Import Core modules in the AppModule only.
。
如果我不在 child 模块中导入 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,
],
};
}
这是 html 的一部分,我尝试使用 CoreModule
<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>
我不想在 child 模块中导入,因为这是在 Parent 模块中导入的。我该如何解决这个问题?
附加信息
当我在 child 中导入 CoreModule
时执行 ng serve
,然后在 ng serve
打开时将其删除。它有效,但如果我关闭并重新开始。启动不了。
A CoreModule
应用于只应导入一次的内容。这些通常是从应用程序范围内的服务导入的。绝对不应该放在 CoreModule
中的是组件、指令和管道。
这些是应该放在 SharedModule
中的东西。
angular 声明了几个 NgModule 类别,您可以将其用作指南:
- Domain:领域 NgModule 是围绕功能、业务领域或用户体验组织的。
- Routed: NgModule 的顶部组件充当路由器导航路线的目的地。
- Routing: 一个路由 NgModule 为另一个 NgModule 提供路由配置。
- Service: NgModule 服务提供数据访问和消息传递等实用服务。
- Widget:小部件 NgModule 使组件、指令或管道可用于其他 NgModule。
- Shared:共享的 NgModule 使一组组件、指令和管道可供其他 NgModule 使用。
我的建议是真正阅读 angular.io
上提供的优秀 docs/guides那么你必须做什么?从 CoreModule
中删除 HasAnyRoleDirective
和 HasRoleDirective
的导出和声明,并将它们放在 SharedModule
中或创建一个小模块 RoleModule
并仅在必要时导入它.由你决定