2017-02-09 16 views
6

मेरे पास एक निर्देश है और मैं इसे कई मॉड्यूल में उपयोग करना चाहता हूं। प्रत्येक मॉड्यूल पर इसे घोषित करने से त्रुटि उत्पन्न होती है। इस प्रकार, मैंने इसे साझा मॉड्यूल में घोषित करने की कोशिश की और इस साझा मॉड्यूल को अन्य मॉड्यूल में आयात किया। हालांकि, यह काम नहीं किया। यह केवल तब काम करता है जब इसे घटक के अपने मॉड्यूल पर बिल्कुल घोषित किया जाता है।कोणीय 2 - एक ही मॉड्यूल में घोषित नहीं होने पर निर्देश काम नहीं कर रहा है

import { NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 

import { GeneralDataService } from './general-data.service'; 
import {ModalDirective} from '../directives/modal.directive'; 

    @NgModule({ 
     imports: [ 
     CommonModule 
     ], 
     providers: [GeneralDataService], 
     declarations: [ModalDirective] 
    }) 
    export class SharedModule { } 

और मॉड्यूल है कि मैं चाहता हूँ का उपयोग करने के ModalDirective:

यहाँ मेरी SharedModule है

export class MyComponent implements OnInit, AfterViewInit { 

    @ViewChild(ModalDirective) modal: ModalDirective; 

    ... 
} 

MyComponent में modal ०१२३८०३८२५३४ है:

import { NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { MyComponent } from './patient.component'; 
import {SharedModule} from '../shared/shared.module'; 
@NgModule({ 
    imports: [ 
    CommonModule, 
    SharedModule 
    ], 
    providers: [ ], 
    declarations: [ MyComponent ] 
}) 
export class MyModule { } 

MyComponent घटक में(यहां तक ​​कि ngAfterViewInit में) यदि ModalDirectiveMyModule में घोषित नहीं किया गया है। कोई भी जानता है कि इसे कैसे ठीक किया जाए?

उत्तर

10

में अपने SharedModule आप export को ModalDirective

... 

@NgModule{(
    ... 
    exports: [ModalDirective] 
)} 
export class SharedModule { ... } 

अधिक जानकारी

+0

काम के लिए साझा मॉड्यूल पर docs देखें जरूरत है। धन्यवाद! –

+0

Thx Fredrik! मेरे निर्देश में 'टेम्पलेट रिफ' का इंजेक्शन है। हालांकि जब मैं 'NgModule.exports' सूची में निर्देश जोड़ता हूं, तो मुझे एक त्रुटि मिली है' टेम्पलेटरफ के लिए कोई प्रदाता नहीं! '। कोई विचार? – cosmozhang

+0

@cosmozhang - वास्तव में आपके कोड को देखे बिना नहीं बता सकता है, लेकिन इस धागे को देखें: https://stackoverflow.com/questions/35932074/angular2-no-provider-for-templateref-ngif-templateref –

संबंधित मुद्दे