当前位置: 首页 > 知识库问答 >
问题:

Angular2材质对话框有问题-您是否将其添加到@NgModule.entryComponents?

澹台啸
2023-03-14

我在我的组件上添加了以下内容:

@Component({
  selector: 'dialog-result-example-dialog',
  templateUrl: './dialog-result-example-dialog.html',
})
export class DialogResultExampleDialog {
  constructor(public dialogRef: MdDialogRef<DialogResultExampleDialog>) {}
}

在我的模块中,我添加了

import { HomeComponent,DialogResultExampleDialog } from './home/home.component';

@NgModule({
  declarations: [
    AppComponent,
    LoginComponent,
    DashboardComponent,
    HomeComponent,
    DialogResultExampleDialog
  ],

// ...

然而,我得到了这个错误....

EXCEPTION: Error in ./HomeComponent class HomeComponent - inline template:53:0 caused by: No component factory found for DialogResultExampleDialog. Did you add it to @NgModule.entryComponents?
    ErrorHandler.handleError @ error_handler.js:50
    next @ application_ref.js:346
    schedulerFn @ async.js:91
    SafeSubscriber.__tryOrUnsub @ Subscriber.js:223
    SafeSubscriber.next @ Subscriber.js:172
    Subscriber._next @ Subscriber.js:125
    Subscriber.next @ Subscriber.js:89
    Subject.next @ Subject.js:55
    EventEmitter.emit @ async.js:77
    NgZone.triggerError @ ng_zone.js:329
    onHandleError @ ng_zone.js:290
    ZoneDelegate.handleError @ zone.js:246
    Zone.runTask @ zone.js:154
    ZoneTask.invoke @ zone.js:345
    error_handler.js:52 ORIGINAL EXCEPTION: No component factory found for DialogResultExampleDialog. Did you add it to @NgModule.entryComponents?
    ErrorHandler.handleError @ error_handler.js:52
    next @ application_ref.js:346
    schedulerFn @ async.js:91
    SafeSubscriber.__tryOrUnsub @ Subscriber.js:223
    SafeSubscriber.next @ Subscriber.js:172
    Subscriber._next @ Subscriber.js:125
    Subscriber.next @ Subscriber.js:89
    Subject.next @ Subject.js:55
    EventEmitter.emit @ async.js:77
    NgZone.triggerError @ ng_zone.js:329
    onHandleError @ ng_zone.js:290
    ZoneDelegate.handleError @ zone.js:246
    Zone.runTask @ zone.js:154
    ZoneTask.invoke @ zone.js:345

共有3个答案

孟彦
2023-03-14

发生这种情况是因为这是一个动态组件,而您没有将它添加到< code>@NgModule下的< code>entryComponents中。

@NgModule({
  /* ----------------- */
  entryComponents: [ DialogResultExampleDialog ] // <---- Add it here

看看Angular团队如何谈论入门组件

条目组件?:数组

此外,这是@NgModule的方法列表包括条目组件...

如您所见,所有这些组件都是可选的(请看问号),包括接受组件数组的entryComponents

@NgModule({ 
  providers?: Provider[]
  declarations?: Array<Type<any>|any[]>
  imports?: Array<Type<any>|ModuleWithProviders|any[]>
  exports?: Array<Type<any>|any[]>
  entryComponents?: Array<Type<any>|any[]>
  bootstrap?: Array<Type<any>|any[]>
  schemas?: Array<SchemaMetadata|any[]>
  id?: string
})

谢志文
2023-03-14

您需要使用< code>@NgModule下的< code>entryComponents。

路由配置中注册的组件也会自动添加到< code>entryComponents中,因为< code>router-outlet也使用< code > viewcontainerref . create component()将路由组件添加到DOM中。

所以你的代码是这样的

@NgModule({
  declarations: [
    AppComponent,
    LoginComponent,
    DashboardComponent,
    HomeComponent,
    DialogResultExampleDialog        
  ],
  entryComponents: [DialogResultExampleDialog]
夏侯俊美
2023-03-14

角度 9.0.0

从9.0.0开始,Ivy不再需要entryComponents属性。请参见折旧指南。

角度 9.0.0

您需要将动态创建的组件添加到条目组件中,@NgModule

@NgModule({
  declarations: [
    AppComponent,
    LoginComponent,
    DashboardComponent,
    HomeComponent,
    DialogResultExampleDialog        
  ],
  entryComponents: [DialogResultExampleDialog]
 类似资料:
  • 我使用Angular2β与angular2材料alpha.3他们是兼容的,但我有映射问题。 在我的公开/索引中。我有这个系统设置 但是在我的一个组件中,当我尝试导入并将其添加到指令中以在模板中使用时,如下所示: 我得到这个错误: angular2-polyfills.js:127GEThttp://localhost:8080/node_modules/@angular2-材质/输入404(未找到

  • 标记的答案使我走上了正确的轨道。

  • 我正在使用AngularMaterial2的对话框。 我想将数据传递给打开的组件。以下是单击按钮打开对话框的方式 在文档页面上有数据属性,但我在已安装的软件包中检查了MdDialogConfig。 配置类中没有数据属性。 现在我如何通过数据的访问?

  • 问题内容: 我创建了一个,它只有两个按钮。 后弹出,我想点击继续打开,如果我点击它应该取消操作。 看起来很容易,但是我不确定我的错误在哪里。 代码段: 问题答案: 您需要查看对的调用的返回值。IE浏览器: 您正在测试,用于设置对话框中应显示的按钮,并且从未对此变量进行过更新- 因此,除之外没有其他内容。 按照Javadoc的规定: 返回:一个整数,指示用户选择的选项

  • 我正在为我的React应用程序使用材料UI的对话框组件。如何将组件设置为变量,以便调用方法?

  • 我正在用Android系统使用。R.风格。主题_Material _Dialog _Alert主题显示一个简单的是/否警报通知和一条消息。 我有不同大小的消息,但警报高度不能容纳较短的字符串,导致布局有点奇怪: 如果我从警报中删除材质设计样式,我会得到一个高度正确的完全正常警报: 是否可以使此对话框自动将其高度设置为具有材料设计主题的消息内容?