2017-04-19 10 views
13

में कस्टम घटक मैं एक साधारण घटक बनाना चाहता था और इसे एक पृष्ठ पर शामिल करना चाहता था। मैंने इसे ionic g component my-header (आयनिक-क्ली वी 3 बीटा) के साथ बनाया, IonicPageModule बग तय किया और फिर किसी अन्य पृष्ठ में जोड़ा गया।आयनिक v3

Error: Uncaught (in promise): Error: Template parse errors: 
'my-header' is not a known element: 
1. If 'my-header' is an Angular component, then verify that it is part of this module. 
2. If 'my-header' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. 

"MyHeaderComponent" स्वचालित रूप से @NgModule घोषणाओं को जोड़ा गया है: मैं तो इस त्रुटि मिलती है।

आपकी मदद के लिए धन्यवाद।

संपादित करें:

घटकों/मेरी हेडर/मेरी-header.html

<div> 
    {{text}} 
</div> 

घटकों/मेरी हेडर/मेरी हेडर:

घटक मेरी components फ़ोल्डर के अंदर स्थित है .module.ts

import { NgModule } from '@angular/core'; 
import { IonicModule } from 'ionic-angular'; 
import { MyHeaderComponent } from './my-header'; 

@NgModule({ 
    declarations: [ 
    MyHeaderComponent, 
    ], 
    imports: [ 
    IonicModule, 
    ], 
    exports: [ 
    MyHeaderComponent 
    ], 
    entryComponents:[ 
    MyHeaderComponent 
    ] 
}) 
export class MyHeaderComponentModule {} 

घटक/मेरा-हेडर/my-header.scss

my-header {} 

घटकों/मेरी हेडर/मेरी-header.ts

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-header', 
    templateUrl: 'my-header.html' 
}) 
export class MyHeaderComponent { 

    text: string; 

    constructor() { 
    console.log('Hello MyHeaderComponent Component'); 
    this.text = 'Hello World'; 
    } 

} 

एप्लिकेशन/app.module.ts

/* imports */ 
import { MyHeaderComponent } from '../components/my-header/my-header'; 

@NgModule({ 
    declarations: [ 
    MyApp, 
    MyHeaderComponent 
    ], 
... 

पृष्ठों/घर/home.html

+0

क्या आपके पास आपके घटक के लिए एक अलग मॉड्यूल.टी फ़ाइल है? –

+1

हां, मैंने घटक –

उत्तर

9

आपको ngModule में MyHeaderComponent आयात करने की आवश्यकता नहीं है।

आपको अपने पृष्ठ मॉड्यूल में MyHeaderComponentModule आयात करना चाहिए जहां आप इसका उपयोग करना चाहते हैं।

imports: [ 
    MyHeaderComponentModule, 
    ], 
+0

धन्यवाद, मैंने इसे पृष्ठ मॉड्यूल 'home.module.ts' में सीधे आयात करने के बारे में नहीं सोचा था। किसी कारण से यह काम नहीं करता है अगर मैं इसे अपने 'app.module.ts' में आयात करता हूं। मैंने पहले ऐसा करने की कोशिश की क्योंकि मैंने सोचा था कि यह "वैश्विक रूप से" उपलब्ध कराएगा। Ionic 3 के लिए –

+0

आयात में नहीं डाला गया है लेकिन आपके पृष्ठ मॉड्यूल की घोषणाओं में। –

+1

@ ज़ीशान आंजम मॉड्यूल आयात में जाते हैं। पृष्ठ/घटक घोषणा में जाएं –

-1

आपको मॉड्यूल में घटक आयात करना होगा। सुनिश्चित करें कि आप उस घटक को भी निर्यात करते हैं।

@NgModule({ 
    imports: [ 
     IonicModule, 
    ], 
    declarations:[ 
     MyHeaderComponent 
    ], 
    exports:[ 
     MyHeaderComponent 
    ], 
    entryComponents:[ 
     MyHeaderComponent 
    ] 

}) 
+0

से संबंधित संपूर्ण कोड जोड़ा है दुख की बात है कि अभी भी मेरे लिए काम नहीं करता है। मैंने कोड नमूने को शामिल करने के लिए अपना प्रश्न अपडेट किया। –

+0

मैंने जो कोड लिखा था वह app.module.ts – ACES

+0

में होना चाहिए जो कि काम नहीं करता ... मैंने इसे सूरज के उत्तर का उपयोग करके तय किया, लेकिन आपकी मदद के लिए धन्यवाद! –

15

चूंकि आयनिक 3 आलसी लोडिंग का समर्थन करता है, तो आपको ऐप में अपना कस्टम घटक आयात करने की आवश्यकता नहीं है। module.ts फ़ाइल। इसके बजाय आप इसे विशिष्ट पृष्ठ की module.ts फ़ाइल में आयात कर सकते हैं। उदाहरण के लिए: आप अपने मुखपृष्ठ में अपने कस्टम घटक उपयोग करना चाहते हैं तो आप बस इसे अपने home.module.ts फ़ाइल में आयात कर सकते हैं नीचे दिए गए के रूप में:

import { NgModule } from '@angular/core'; 
 
import { IonicPageModule } from 'ionic-angular'; 
 
import { HomePage } from './home'; 
 
import { MyHeaderComponent }from '../../components/myheader/myheader'; 
 

 
@NgModule({ 
 
    declarations: [ 
 
    HomePage, 
 
    MyHeaderComponent 
 
    ], 
 
    imports: [ 
 
    IonicPageModule.forChild(HomePage), 
 
    
 
    ], 
 
    exports: [ 
 
    HomePage, 
 
    ] 
 
}) 
 
export class HomePageModule { 
 
    
 
}

हालांकि करने के लिए मत भूलना app.module.ts फ़ाइल से अपने आयात और घोषणाओं को हटा दें जो स्वचालित रूप से जोड़े जाते हैं जब आप अपना कस्टम घटक बनाते हैं।

+0

ठीक काम करता है धन्यवाद, आदमी! – Zaza

0

यहां मेरा मॉड्यूल है। आशा है कि यह आप अपने सवाल का जवाब में मदद मिलेगी:

@NgModule({ 
    declarations: [ 
    TestPage 
    ], 
    imports: [ 
    IonicPageModule.forChild(TestPage), 
    TranslateModule.forChild(), 
    PipesModule, 
    NavigatorComponentModule 
    ], 
    exports: [ 
    EntriesPage, 
    ], 
    providers:[ 
    NavigatorComponent 
    ] 
}) 
0

बस स्पष्ट करने के लिए: मैं कई पृष्ठों (पुन: प्रयोज्य घटक) में एक कस्टम navigatorComponent उपयोग कर रहा हूँ।

import { NgModule } from '@angular/core'; 
import { IonicPageModule } from 'ionic-angular'; 
import { TranslateModule } from '@ngx-translate/core'; 
import { PipesModule } from '../../pipes/PipesModule'; 
import { NavigatorComponent } from '../../components/navigator/navigator'; 
import { ComponentsModule } from '../../components/components.module'; 
import { NavigatorComponentModule } from '../../components/navigator/navigator.module'; 

@NgModule({ 
    declarations: [ 
    TestPage, 

    ], 
    imports: [ 
    IonicPageModule.forChild(EntriesPage), 
    TranslateModule.forChild(), 
    PipesModule, 
    NavigatorComponentModule 

    ], 
    exports: [ 
    TestPage, 

    ], 
    providers:[ 
    NavigatorComponent 
    ] 
}) 
export class TestPageModule {} 

नोट: ts, सीएसएस, एचटीएमएल और yourcomponentname.module.ts: navigatorComponent 4 फ़ाइलें है। "आयनिक जी घटक" कमांड अंतिम फ़ाइल (yourcomponentname.module.ts) उत्पन्न नहीं करता है। तो मैंने यह किया।