【问题标题】:Strange behavior on Angular importing ModulesAngular 导入模块的奇怪行为
【发布时间】:2021-02-27 06:42:24
【问题描述】:

我很难理解 Angular 中的 NgModel 是如何工作的,我将举一个发生在我身上的问题的例子。

我有 3 个模块 AppModule(根模块)、SharedModule 和 AssignmentModule。在我的 AssignmentModule 中,我导入了一些由 ngx-bootstrap 制作的模态组件,代码如下:

const routes: Routes = [
  {
    path: '',
    component: AssignmentManagerComponent,
    children: [
      {
        path: '',
        component: TaskTemplateComponent,
      },
      {
        path: ':template',
        component: TaskManagerComponent,
      },
    ],
  },
];

@NgModule({
  declarations: [
    AssignmentManagerComponent,
    TaskTemplateComponent,
    TaskManagerComponent,
    ModalTaskTemplateComponent,
    ModalTaskSectionComponent,
    ModalTaskComponent,
  ],
  imports: [
    CommonModule,
    SharedModule,
    // GeneralModule,
    RouterModule.forChild(routes),
  ],
  exports: [RouterModule, AssignmentManagerComponent],
})
export class AssignmentsModule {}

在我的 SharedModule 中,我有这个:

@NgModule({
  declarations: [
  ],
  imports: [
    ConfirmationPopoverModule.forRoot({
      confirmButtonType: 'danger',
    }),
  ],
  exports: [
    MatTableModule,
    MatPaginatorModule,
    MatSortModule,
    MatInputModule,
    MatFormFieldModule,
    MatCheckboxModule,
    MatDialogModule,
    MatDividerModule,
    MatRadioModule,
    MatSelectModule,
    MatTabsModule,
    MatExpansionModule,
    MatSlideToggleModule,
    MatDatepickerModule,
    MatNativeDateModule,
    MatButtonModule,
    // MatMomentDateModule,
    // MomentDateAdapter,
    ConfirmationPopoverModule,
    FormsModule,
    ReactiveFormsModule,
    TextMaskModule,
    DragDropModule,
    ScrollingModule,
    FontAwesomeModule,
  ],
})
export class SharedModule { }

我试图在我的 ngx-bootstrap 模态中从 Material Angular 中放置一个简单的 mat-select。我面临的问题是我收到此错误:

没有 InjectionToken mat-select-scroll-strategy 的提供者!

我知道这个解决方案只是从这个模块导入:MatSelectModule,但我把它放在 SharedModule 中,它在我的 AssignmentModule 中导出。如果我把这个模块放在我的 AppModule 上,这个错误就会停止,但这不是一个优雅的解决方案。我做错了什么?

【问题讨论】:

    标签: angular


    【解决方案1】:

    根据您的代码,您没有在 ShareModule 中导入 MatSelectModule,将此导入放在那里,它应该可以正常工作

    【讨论】:

    • 我将 MatSelectModule 放在从 SharedModule 的导入和导出中,但不工作 =/
    • 导入此模块时看到什么错误?我忘记提到的另一件事是创建一个模块来导出 Angular 材料模块不是一个好习惯,最好在特定模块中导入您需要的模块
    • 这个错误就像我没有导入这个模块这个“没有 InjectionToken mat-select-scroll-strategy 的提供者!”,但是如果我穿上我的 AppModule 就可以了,我想知道为什么它不起作用。
    • 问题是正在使用的 mat 模块缺少对等依赖项。转到那个 ngmodule 并在那里安装它。您应该已经看到有关安装 matselectmodule 的警告。尝试卸载重装看看依赖
    猜你喜欢
    • 2016-07-09
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2021-11-08
    • 2011-11-25
    • 1970-01-01
    相关资源
    最近更新 更多