微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法绑定属性,因为它是按钮的未知属性

如何解决无法绑定属性,因为它是按钮的未知属性

我有一个问题,我有一个名为 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 中删除 HasRoleDirectiveCoreModule 的导出和声明,并将它们放入 SharedModule 或创建一个小模块 RoleModule 并仅在必要时导入它.由你决定

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。