在範例裡面 Component01 和 Component02 都是由 ComponentFactory動態產生的
我把另外兩個 Component (03和04) 放到BasicModule裡面
想要使用ModuleFactory來動態載入module
目的是希望可以達到動態產生component的同時又有lazzy loading 的效果
想請教的是在範例網頁的錯誤是:
Error: Cannot find ‘BasicModule’ in ‘./basic.module’
(我寫的路徑應該沒有錯但是卻找不到??)
可是我在本機自己寫的範例卻是別的錯誤:
Error: No component factory found for Dy3Component. Did you add it to @NgModule.entryComponents?
(在basic.module我有把component放進entryComponents,卻還是一直報錯)
範例網址:https://stackblitz.com/edit/angular-multiple-component
你這個問題,跟你的寫法有關係
簡單的說, ComponentFactory 隸屬的 NgModule 是不同的,所以才會出現 No component factory found for Dy3Component. Did you add it to @NgModule.entryComponents?
如果在 stackblitz 上測試時,在 app.component.ts module.load 的路徑要修改成 src/app/basic.module#BasicModule
才會正確
這裡有我修正後的版本
你參考看看
1個讚
原來如此…難怪怎麼改路徑都是錯的 冏
那想請教一下,原本我的寫法是把NgModuleFactoryt的Component直接加到tab-detail中,
現在多了 componentFactory = this.moduleFactory.create(this.injector)
這是因為basic.module是後來才載入的,所以要先注入到NgModuleFactory之後才有辦法顯示component
是這樣的概念嗎?
另外想請教一下,假設BasicModule有10個Component那我要怎麼選擇載入的是哪個component?
只能在module裡面寫好static嗎?
要動態產生 Component ,要確保所使用的 ComponentFactory 是來自所Component 所註冊的 NgModule
你原本的寫法是,要 AppModule 去產生 Dy3Component.
這個問題,直接發在討論區上,會讓更多人受惠
1個讚