1. 程式人生 > >angular2:No component factory found for xxxxxxxxComponent

angular2:No component factory found for xxxxxxxxComponent

angular2中如果有component沒有被使用到,會提示 No component factory found for xxxxxxxxComponent. Did you add it to @NgModule.entryComponents?(…)字樣的資訊,這時我們直接在moudule中加入
  providers: [
    { provide: 'detailService', useClass: DetailService }
  ]

tips:

  NgModule的主要屬性如下:

  • declarations:模組內部Components/Directives/Pipes的列表,宣告一下這個模組內部成員
  • providers:指定應用程式的根級別需要使用的service。(Angular2中沒有模組級別的service,所有在NgModule中宣告的Provider都是註冊在根級別的Dependency Injector中)
  • imports:匯入其他module,其它module暴露的出的Components、Directives、Pipes等可以在本module的元件中被使用。比如匯入CommonModule後就可以使用NgIf、NgFor等指令。
  • exports:用來控制將哪些內部成員暴露給外部使用。匯入一個module並不意味著會自動匯入這個module內部匯入的module所暴露出的公共成員。除非匯入的這個module把它內部匯入的module寫到exports中。
  • bootstrap:通常是app啟動的根元件,一般只有一個component。bootstrap中的元件會自動被放入到entryComponents中。
  • entryCompoenents: 不會再模板中被引用到的元件。這個屬性一般情況下只有ng自己使用,一般是bootstrap元件或者路由元件,ng會自動把bootstrap、路由元件放入其中。 除非不通過路由動態將component加入到dom中,否則不會用到這個屬性。

  每個Angular2的應用都至少有一個模組即跟模組。