कोणीय 4: कोई घटक कारखाना नहीं मिला, क्या आपने इसे @ NgModule.entryCompords में जोड़ा?


300

मैं वेबपैक के साथ कोणीय 4 टेम्प्लेट का उपयोग कर रहा हूं और मेरे पास यह त्रुटि है जब मैं एक घटक का उपयोग करने की कोशिश करता हूं (पुष्टि)

पुष्टिमार्ग के लिए कोई घटक कारखाना नहीं मिला। क्या आपने इसे @ NgModule.entryCompords में जोड़ा था?

में घटक घोषित किया गया है app.module.server.ts

@NgModule({
  bootstrap: [ AppComponent ],
  imports: [
    // ...
  ],
  entryComponents: [
    ConfirmComponent,
  ],
})
export class AppModule { }

मेरे पास भी है app.module.browser.tsऔरapp.module.shared.ts

मैं कैसे इसे ठीक कर सकता हूं?


1
ConfirmComponentविवरण का उपयोग कैसे कर रहे हैं आप अपने प्रश्न का उत्तर देने के लिए पर्याप्त नहीं हैं
अनिक

Hi.i'm का उपयोग मैं अपने कंपोनेंट इम्पोर्ट {ConfirmComponent} में "../confirm.component/confirm.component" में अंकित करने के बाद कर रहा हूं;
मृगी


यदि यह एक सामान्य घटक के रूप में कार्य करने जा रहा है, तो आप इसे कॉमनमॉड्यूल की घोषणाओं और प्रविष्टिकंप्यूटरों में डाल सकते हैं, और अन्य स्थानों से हटा सकते हैं।
चारित्र गोयनवार्डन

1
कोणीय संवाद के लिए एक ही त्रुटि और ठीक! freakyjolly.com/…
कोड स्पाई

जवाबों:


437

इसे अपने में जोड़ें module.ts,

declarations: [
  AppComponent,
  ConfirmComponent
]

यदि ConfirmComponent किसी अन्य मॉड्यूल में है, तो आपको इसे वहां निर्यात करने की आवश्यकता है, इस प्रकार आप इसे बाहर उपयोग कर सकते हैं, जोड़ें:

exports: [ ConfirmComponent ]

--- स्पष्ट रूप से सक्षम Ivy के साथ कोणीय 9 या कोणीय 8 अद्यतन करें ---

आईवी के साथ प्रवेश घटक की अब आवश्यकता नहीं है और अब पदावनत किया जाता है

--- आइवी विकलांग के साथ कोणीय 9 और 8 के लिए ---

डायनेमिक रूप से लोड किए गए घटक के मामले में और कंपोनेंटफैक्ट उत्पन्न होने के लिए, घटक को मॉड्यूल के एंट्रीकंपर्स में भी जोड़ा जाना चाहिए:

declarations: [
  AppComponent,
  ConfirmComponent
],
entryComponents: [ConfirmComponent],

प्रविष्टिकंपनी की परिभाषा के अनुसार

उन घटकों की सूची निर्दिष्ट करता है जिन्हें इस मॉड्यूल के परिभाषित होने पर संकलित किया जाना चाहिए। यहाँ सूचीबद्ध प्रत्येक घटक के लिए, कोणीय एक ComponentFactory बनाकर ComponentFactoryResolver में संग्रहीत करेगा।


2
Hi.it पहले से ही app.module.sared.ts और entryCompords में app.module.server.ts
mrapi

3
अगर ConfirmComponent किसी अन्य मॉड्यूल में है, तो आपको इसे वहां निर्यात करने की आवश्यकता है, इस प्रकार आप इसे बाहर का उपयोग कर सकते हैं, जोड़ सकते हैं: निर्यात: [ConfirmComponent] अपने app.module.sared.ts में
फतेह मोहम्मद

1
यह ng2-बूटस्ट्रैप-मोडल घटक है github.com/ankosoftware/ng2-bootstrap-modal/blob/master/… से
mrapi

9
आप सभी को धन्यवाद। !!!!!! ..! एक ही फाइल में सभी घोषणाएं और प्रविष्टिकम्पाउंटर डालते हैं app.module.sared.ts ने समस्या को ठीक किया
mrapi

9
निर्यात काम नहीं कर रहा है ... मेरे लिए काम कर रहे प्रविष्टिकंप्यूटर विकल्प!
राजा राम मोहन थावलम

132

इसके बारे में विवरण देखेंentryComponent :

आप किसी भी घटक लोड हो रहे हैं गतिशील रूप से तो आप दोनों में रख करने की जरूरत है declarationsऔर entryComponent:

@NgModule({
  imports: [...],
  exports: [...],
  entryComponents: [ConfirmComponent,..],
  declarations: [ConfirmComponent,...],
  providers: [...]
})

5
धन्यवाद, मेरा मतलब है, धन्यवाद !!! मैं किसी अन्य घटक के अंदर डेटा दर्ज करने के लिए एक संवाद बना रहा था (डायलॉग में अन्य घटक के अंदर इसका घटक घोषणा है, और लेआउट के लिए डायलॉग।)
रेमन

3
इसने मेरे लिए चाल चली और चुने हुए उत्तर की तुलना में बेहतर व्याख्या भी की। धन्यवाद!
आर्सेन सिमोन

2
स्पष्ट रूप से मेरे लिए सबसे अच्छा जवाब!
tuxy42

यह मेरे लिए समाधान था; मैं मक्खी पर एक घटक बना रहा था और उसके पास सही मॉड्यूल में सब कुछ था लेकिन फिर भी त्रुटि हो रही थी। मेरे बनाए गए घटकों को जोड़ना entryComponentsसमाधान था - धन्यवाद!
Novastorm

2
मेरा घटक जिसे मॉडेलकम्पोनेंट कहता है, एक घटक का पोता है। न तो ModalComponent को entryComponentsजोड़ना और न ही इसे exportsमेरे लिए काम करने के लिए जोड़ना । लेकिन मैं कुछ अन्य घटकों से मोडालकम्पोनेंट को कॉल कर सकता हूं जो पोते नहीं हैं
कैनबक्स

54

टी एल; डॉ: साथ ng6 में एक सेवा providedIn: "root"ComponentFactory नहीं मिल सकता है जब घटक में नहीं जोड़ा गया है entryComponentsकी app.module

यह समस्या तब भी हो सकती है यदि आप सेवा में घटक बनाने के साथ संयोजन में कोणीय 6 का उपयोग कर रहे हैं!

उदाहरण के लिए, एक ओवरले बनाना:

@Injectable({
  providedIn: "root"
})
export class OverlayService {

  constructor(private _overlay: Overlay) {}

  openOverlay() {
    const overlayRef = this._createOverlay();
    const portal = new ComponentPortal(OverlayExampleComponent);

    overlayRef.attach(portal).instance;
  }
}

समस्या है

प्रदान किया गया: "रूट"

परिभाषा, जो app.module में यह सेवा प्रदान करती है

इसलिए, यदि आपकी सेवा में स्थित है, उदाहरण के लिए, "OverlayModule", जहां आपने OverlayExampleComponent भी घोषित किया है और इसे प्रविष्टिCompectors में जोड़ा है, तो सेवा OverlayExampleComponent के लिए ComponentFactory नहीं खोज सकती।


3
कोणीय 6. विशिष्ट समस्या। अपने घटक को @NgModule @NgModule ({प्रविष्टिकंप्यूटर: [yourComponentName]}}) में दर्ज करें
DeanB_Develop

6
इसे हटाकर providedInऔर providersमॉड्यूल पर विकल्प का उपयोग करने के बजाय तय किया जा सकता है ।
कैलिस

जानकारी के लिए धन्यवाद, लेकिन यह @NgModule ({..., प्रविष्टिकंप्यूटर: [...]}} को जोड़कर मेरे लिए भी काम किया है: "जड़"
Mykola Mykolayovich Dolynskyi

1
यह github.com/angular/angular/issues/14324 से संबंधित लगता है यह कोणीय 9 में हल किया जाएगा
पाओलो सांची

वास्तव में, विशेष रूप से आलसी-भारित मॉड्यूल में। इसे ठीक करने के लिए, मैंने NgModule.providers को निर्दिष्ट किया: [MyLazyLoadedModuleService] और MyLazyLoadedModuleService.providedIn को "रूट" से बदलकर MyLazyLoadedmodule कर दिया।
हावर्ड

45

मेरी भी यही समस्या थी। इस मामले में imports [...]यह महत्वपूर्ण है, क्योंकि यदि आप आयात नहीं करते हैं तो यह काम नहीं करेगा NgbModalModule

त्रुटि विवरण कहता है कि घटकों को entryComponentsसरणी में जोड़ा जाना चाहिए और यह स्पष्ट है, लेकिन सुनिश्चित करें कि आपने इसे पहले स्थान पर जोड़ा है:

imports: [
    ...
    NgbModalModule,
    ...
  ],

6
तुमने मुझे बचा लिया, महाराज! जब आप किसी मोडल में घटक को खोलने का प्रयास करते हैं तो यह निश्चित रूप से आवश्यक है। इस स्थिति में त्रुटि संदेश थोड़ा भ्रामक है।
बीवियों

आप इसे कहाँ से आयात करते हैं?
Mdomin45

मेरे मामले में NbDialogModule के आयात को NbDialogModule.forChild (null) में बदल दिया,
Maayan Hope

@ Mdomin45 आयात {NgbModalModule} '@ एनजी-बूटस्ट्रैप / एनजी-बूटस्ट्रैप' से;
mpatel

24

उस घटक को अपने ऐप के मॉड्यूल के @NgModule में प्रविष्टिकॉर्पोरेटर्स में जोड़ें:

entryComponents:[ConfirmComponent],

साथ ही घोषणाएँ:

declarations: [
    AppComponent,
    ConfirmComponent
]

मेरा दिन बचाया! चीयर्स मेट
सहान सेरसिंघे

मेरा घटक जिसे मॉडेलकम्पोनेंट कहता है, एक घटक का पोता है। न तो ModalComponent को entryComponentsजोड़ना और न ही इसे exportsमेरे लिए काम करने के लिए जोड़ना । लेकिन मैं कुछ अन्य घटकों से मोडालकम्पोनेंट को कॉल कर सकता हूं जो पोते नहीं हैं
23

14

आयात में 'NgbModalModule' जोड़ें और प्रविष्टि में आपके घटक का नाम App.module.ts नीचे दिखाए गए अनुसार यहां छवि विवरण दर्ज करें


मेरा घटक जिसे मॉडेलकम्पोनेंट कहता है, एक घटक का पोता है। न तो ModalComponent को entryComponentsजोड़ना और न ही इसे exportsमेरे लिए काम करने के लिए जोड़ना । लेकिन मैं कुछ अन्य घटकों से मोडालकम्पोनेंट को कॉल कर सकता हूं जो पोते नहीं हैं
16

यदि आपके घटक को पहले से ही प्रवेशकंपनियों में जोड़ दिया गया है, तो मुझे इस उत्तर को फिर से लिखना होगा, और आप अभी भी समस्या का सामना कर रहे हैं, सुनिश्चित करें कि आप जिस modalComponent का उपयोग कर रहे हैं उसे जाँचें और इसे आयात सरणी में जोड़ें! इससे मेरी जान बच गई!
क्लाइड

10

ऐसे घटक रखें जो @NgModuledecorator फ़ंक्शन के तहत डायनामिक रूप से प्रविष्टिकॉर्पोरेटर्स के लिए बनाए गए हैं।

@NgModule({
    imports: [
        FormsModule,
        CommonModule,
        DashbaordRoutingModule
    ],
    declarations: [
        MainComponent,
        TestDialog
    ],
    entryComponents: [
        TestDialog
    ]
})

1
हाँ, यह सुपर मददगार था - अगर आपने ऐसा डायलॉग बोला है जो किसी मार्ग से नहीं उठाया गया है, लेकिन गतिशील रूप से उपयोग किया जाता है, तो उसे entryComponentsसंबंधित एनजी मॉड्यूल के साथ जोड़ा जाना चाहिए ।
atconway

मेरा घटक जिसे मॉडेलकम्पोनेंट कहता है, एक घटक का पोता है। न तो ModalComponent को entryComponentsजोड़ना और न ही इसे exportsमेरे लिए काम करने के लिए जोड़ना । लेकिन मैं कुछ अन्य घटकों से मोडालकम्पोनेंट को कॉल कर सकता हूं जो पोते नहीं हैं
23

10

मुझे कोणीय 6 के साथ एक ही समस्या है, यही मेरे लिए काम करता है:

@NgModule({
...
entryComponents: [ConfirmComponent],
providers:[ConfirmService]

})

यदि आपके पास कन्फर्म सर्विस की तरह एक सेवा है , तो रूट के बजाय वर्तमान मॉड्यूल के प्रदाताओं में घोषित किया जाना चाहिए


8

बूटस्ट्रैप मोडल के लिए मेरे पास यही मुद्दा था

'@ एनजी-बूटस्ट्रैप / एनजी-बूटस्ट्रैप' से {NgbModal} आयात करें;

यदि यह आपका मामला है, तो मॉड्यूल को घोषणाओं और प्रविष्टिकंपीटर्स में घटक जोड़ें क्योंकि अन्य प्रतिक्रियाएं बताती हैं, लेकिन इसे अपने मॉड्यूल में भी जोड़ें

'@ एनजी-बूटस्ट्रैप / एनजी-बूटस्ट्रैप' से {NgbModule} आयात करें;

imports: [
   NgbModule.forRoot(),
   ...
]

8

यह त्रुटि तब होती है जब आप किसी घटक को गतिशील रूप से लोड करने का प्रयास करते हैं और:

  1. जिस घटक को आप लोड करना चाहते हैं, वह रूटिंग मॉड्यूल नहीं है
  2. घटक मॉड्यूल प्रविष्टिकंपार्टर्स में नहीं है।

रूटिंगमॉडल में

const routes: Routes = [{ path: 'confirm-component', component: ConfirmComponent,data: {}}]

या मॉड्यूल में

entryComponents: [
ConfirmComponent
} 

इस त्रुटि को ठीक करने के लिए आप एक राउटर को घटक में जोड़ सकते हैं या इसे मॉड्यूल के एंट्रीकॉमर्स में जोड़ सकते हैं।

  1. एक राउटर को कंपोनेंट में जोड़ें। इस एप्रोच के वापस लेने पर आपका कंपोनेंट उस यूआरएल के साथ एक्सेस हो जाएगा।
  2. इसे प्रविष्टिकॉर्पोरेटर्स में जोड़ें। इस स्थिति में आपके घटक में कोई url संलग्न नहीं होगा और यह url के साथ सुलभ नहीं होगा।

8

जब मैं गतिशील घटक बनाता हूं तो मुझे Angular7 में एक ही मुद्दा मिला था। दो घटक हैं (TreatListComponent, MyTreatComponent) जिन्हें गतिशील रूप से लोड करने की आवश्यकता है। मैंने अपने app.module.ts फ़ाइल में बस प्रविष्टिकम्पाउंटर सरणी जोड़ी।

    entryComponents: [
    TreatListComponent,
    MyTreatComponent
  ],

6

यदि आप अपने एप्लिकेशन में रूटिंग का उपयोग करते हैं

सुनिश्चित करें कि मार्ग में नए घटक जोड़ें

उदाहरण के लिए :

    const appRoutes: Routes = [
  { path: '', component: LoginComponent },
  { path: 'home', component: HomeComponent },
  { path: 'fundList',      component: FundListComponent },
];

7
नहीं, मुझे नहीं लगता कि हर घटक एक मार्ग में होना चाहिए।
मैकनिक

केवल वे पृष्ठ जिन्हें आप प्रदर्शित करना चाहते हैं वे मार्गों में होने चाहिए। एक पेज कई घटकों का उपयोग / प्रदर्शन कर सकता है
थिबुड लैकन

हर बार जब आप रूट में घटक जोड़ने की जरूरत नहीं है, जैसे कि मॉडल। ऐसे घटक रखें जो @NgModuledecorator फ़ंक्शन के तहत डायनामिक रूप से प्रविष्टिकॉर्पोरेटर्स के लिए बनाए गए हैं।
कोडमाइंड

3

मेरे मामले में मुझे प्रविष्टिकंप्यूटरों की आवश्यकता नहीं थी - नीचे दिए गए लिंक में वर्णित मूल सेटअप के रूप में, लेकिन मुझे मुख्य ऐप मॉड्यूल और एनक्लोजिंग मॉड्यूल दोनों में आयात को शामिल करने की आवश्यकता थी।

imports: [
    NgbModule.forRoot(),
    ...
]

https://medium.com/@sunilk/getting-started-angular-6-and-ng-bootstrap-4-4b314e015c1c

आपको केवल प्रविष्टिकंपाउटर्स में इसे जोड़ने की आवश्यकता है यदि एक घटक को मोडल में शामिल किया जाएगा। डॉक्स से:

आप एक मौजूदा घटक को मोडल विंडो की सामग्री के रूप में पास कर सकते हैं। इस मामले में अपने NgModule के एक प्रविष्टिकंप्यूटर अनुभाग के रूप में सामग्री घटक को जोड़ना याद रखें।


error TS2339: Property 'forRoot' does not exist on type 'typeof NgbModule'.कोणीय 8 का उपयोग कर सकते हैं
कैनबक्स

3

मुझे गतिशील घटकों का उपयोग करके एग्री-ग्रिड के साथ एक ही मुद्दा मिल रहा था। मैंने पाया कि आपको एग-ग्रिड मॉड्यूल में डायनामिक कंपोनेंट जोड़ने की जरूरत है।

आयात: [StratoMaterialModule, BrowserModule, AppRoutingModule, HttpClientModule, BrowserAnimationsModule, NgbModule.forRoot (), FormsModule, ReactiveFormsModule, AppRoutingModule, AgGridModule.withComponents (ProjectUpdateButtonComponent) ],


3

मेरे मामले में, मैं MatDialogModuleएक बच्चे के मॉड्यूल में आयात करना जोड़ना भूल गया ।


2

यहाँ स्पष्टीकरण के लिए। यदि आप ComponentFactoryResolverघटक में सीधे उपयोग नहीं कर रहे हैं , और आप इसे सेवा में सार करना चाहते हैं, जो तब घटक में इंजेक्ट किया जाता है, तो आपको इसे उस मॉड्यूल के लिए प्रदाताओं के नीचे लोड करना होगा, क्योंकि यदि आलसी लोड किया जाता है तो यह काम नहीं करेगा।


2

यदि आपको घटक संवाद वर्ग प्रदान करने के बाद भी त्रुटि है entryComponents, तो पुनः आरंभ करने का प्रयास करें ng serve- यह मेरे लिए काम करता है।


2

मेरी त्रुटि .bb से गलत मापदंडों के साथ NgbModal ओपन मेथड को कॉल कर रही थी


2

आप आयात करना चाहिए NgbModuleमें मॉड्यूल इस तरह:

@NgModule({
  declarations: [
    AboutModalComponent
  ],
  imports: [
    CommonModule,
    SharedModule,
    RouterModule,
    FormsModule,
    ReactiveFormsModule,
    NgxLoadingModule,
    NgbDatepickerModule,
    NgbModule
  ],
  entryComponents: [AboutModalComponent]
})
 export class HomeModule {}


उस भाई के लिए आदर्श उदाहरण url - hassantariqblog.wordpress.com/2017/02/12/…
जुआन इग्नासियो

1
  1. entryComponentsमहत्वपूर्ण है। इस पर उपरोक्त उत्तर सही हैं।

परंतु...

  1. यदि आप एक ऐसी सेवा प्रदान कर रहे हैं जो मोडल (एक सामान्य पैटर्न) को खोलती है और आपका मॉड्यूल जो संवाद घटक को परिभाषित करता है, AppModule में लोड नहीं है, तो आपको बदलने की आवश्यकता providedIn: 'root'है providedIn: MyModule। सामान्य अच्छे अभ्यास के रूप में आपको बस providedIn: SomeModuleउन सभी संवाद सेवाओं के लिए उपयोग करना चाहिए जो मॉड्यूल में हैं।

0

मैं Angular8 का उपयोग कर रहा हूं, और मैं घटक को गतिशील रूप से एक अन्य मॉड्यूल खोलने की कोशिश कर रहा हूं , इस मामले में, आपको import the moduleउस मॉड्यूल में शामिल होना होगा जो घटक को खोलने की कोशिश कर रहा है, निश्चित रूप export से घटक के अलावा और इसे entryComponentsसरणी में सूचीबद्ध करें। जैसा कि पिछले उत्तरों ने किया था।

imports: [
    ...
    TheModuleThatOwnTheTargetedComponent,
    ...
  ],

0

मेरे मामले में मैं इस से समस्या हल हो जाती:
) 1 रखने NgxMaterialTimepickerModuleमें app module imports:[ ]
) 2 रखने NgxMaterialTimepickerModuleमें testmodule.ts imports:[ ]
) 3 रखने testcomponentमें declartions:[ ]औरentryComponents:[ ]

(मैं कोणीय 8+ संस्करण का उपयोग कर रहा हूं)


-1

App.module में सभी नए पृष्ठ घोषित करें

@NgModule({
  declarations: [
    MyApp,
    RegisterPage,
    OtpPage,
    LoginPage,
    ForgetPasswordPage,ChatlistPage,ChatPage,TabsPage

    // AboutPage,

    // BusinessDetailDescPage,
    // BusinessDescPage
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot(),
    HttpClientModule,
    NgxBarcodeModule
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    RegisterPage,
    OtpPage,
    LoginPage,
    ForgetPasswordPage,ChatlistPage,ChatPage,TabsPage
    // AboutPage,

    // BusinessDetailDescPage,
    // BusinessDescPage
  ],

 - 


----------


---------

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.