第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

找不到 SendMessageComponent 的組件工廠。

找不到 SendMessageComponent 的組件工廠。

繁星淼淼 2023-02-17 17:24:43
我想用角度材料對話框打開組件。我寫這段代碼:sendMessage(): void { const dialogRef = this.matDialog.open(SendMessageComponent, {  data: {    requestRefId: this.requestId  },  panelClass: 'semd_message'});dialogRef.afterClosed().subscribe(res => {  if (res) {    this.FetchMessage();  } });}但是當(dāng)我想打開對話框時,它顯示了這個錯誤:No component factory found for SendMessageComponent. Did you add it to @NgModule.entryComponents?at noComponentFactoryError (core.js:27401)at CodegenComponentFactoryResolver.resolveComponentFactory (core.js:27477)at CdkPortalOutlet.attachComponentPortal (portal.js:810)at MatDialogContainer.attachComponentPortal (dialog.js:354)at MatDialog._attachDialogContent (dialog.js:1161)at MatDialog.open (dialog.js:1028)at MessageComponent.sendMessage (message.component.ts:71)at Object.handleEvent (message.component.html:3)at handleEvent (core.js:45703)at callWithDebugContext (core.js:47343)declarations在我的模塊中,我在, entryComponents,中定義了一個 SendMessageComponent exports。    @NgModule({  declarations: [ListComponent, SendMessageComponent],  imports: [    CommonModule,    BrowserAnimationsModule,    EMoneyDepositRoutingModule,    ReactiveFormsModule,    FormsModule ,    PageLayoutModule,    SecondaryToolbarModule,    TranslateModule.forChild(),    SharedModule,    CoreModule,    BreadcrumbsModule,    Angular2PromiseButtonModule.forRoot(promiseButtonConfig)  ],  exports:[SendMessageComponent],  entryComponents: [SendMessageComponent]})export class EMoneyDepositModule { }現(xiàn)在有什么問題?我該如何解決這個問題???
查看完整描述

3 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊

如果您遇到此問題,我假設(shè)您使用的是 Angular v8 或更低版本。使用 Ivy,您不再需要將動態(tài)呈現(xiàn)的組件添加到entryComponents. 一種選擇是升級您的角度版本。

為什么我們需要添加一個動態(tài)創(chuàng)建的組件entryComponents?

在創(chuàng)建組件時,Angular 需要ComponentFactory解析它們。當(dāng)您在模板中使用組件時,angular 會為這些組件創(chuàng)建工廠。但是,動態(tài)呈現(xiàn)的組件不會在任何模板中使用。這就是為什么您需要告訴 Angular 通過將這些組件添加到entryComponents(使用 Ivy-aka Angular v9+,情況不再如此)來為這些組件創(chuàng)建一個工廠。讓我們看看你的情況。

你有一個延遲加載的模塊EMoneyDepositModule,你添加SendMessageComponententryComponents. 這樣做是為SendMessageComponent注入樹的子部分創(chuàng)建一個工廠。它僅適用于EMoneyDepositModule. 此模塊之外的任何人都不能注入該工廠。我假設(shè)matDialog是全球提供的,您可以在任何地方訪問它。但是,matDialog無法訪問延遲加載模塊的工廠。

我已經(jīng)能夠重現(xiàn)你的問題。在這里檢查

所以您可以執(zhí)行以下操作之一

  1. 添加SendMessageComponent到提供entryComponents的模塊中matDialog

  2. 以某種方式在您的延遲加載模塊中提供一個matDialog。我假設(shè)您通過簡單地導(dǎo)入來實現(xiàn)這一點MatDialogModuleEMoneyDepositModule 上面的示例中,只需取消MatDialogModule注釋lazy.module


查看完整回答
反對 回復(fù) 2023-02-17
?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗 獲得超8個贊

我在 Angular 12.1 版本中遇到了同樣的問題,“沒有找到組件工廠”。我原以為 IVY 是隨 Angular 12.1 自動安裝的,但事實并非如此。解決方案,我更新了我的編譯器以使用 IVY,并且一切都按預(yù)期工作。有關(guān)如何升入IVY 的詳細(xì)信息,請參閱此網(wǎng)站


查看完整回答
反對 回復(fù) 2023-02-17
?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗 獲得超5個贊

我看到可能的原因:

新組件

正如 @Random 在評論中提到的那樣,新添加的組件可能無法被正確使用ng serve

另一個 SendMessageComponent

SendMessageComponent您可能在 ts-import 語句中引用了另一個。

循環(huán)引用

延遲加載的模塊很容易出現(xiàn)這種行為。請檢查您的SendMessageComponent和其他相關(guān)組件。SendMessageComponent絕對不應(yīng)從同一模塊導(dǎo)入任何其他元素。請將可能的發(fā)現(xiàn)更改為相對導(dǎo)入。


查看完整回答
反對 回復(fù) 2023-02-17
  • 3 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號