2017-01-16 11 views
8

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

//...imports 
export abstract class TutorialDirective { 
    //...base class logic 
} 

@Directive({ 
    selector: '[tut]', 
    exportAs: 'tut' 
}) 
export class DefaultTutorialDirective extends TutorialDirective { 
    //...calls into the base class for some shared stuff. 
} 

त्रुटि इस

ERROR in Cannot determine the module for class TutorialDirective in /test-app/src/app/tutorial/directive/tutorial.directive.ts! 

मेरे AppModule की तरह दिखता है:

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule } from '@angular/http'; 

import { AppComponent } from './app.component'; 

import { TutorialService } from './tutorial/tutorial.service'; 
import { TutorialDirective, DefaultTutorialDirective } from './tutorial/directive/tutorial.directive'; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    DefaultTutorialDirective 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule 
    ], 
    providers: [TutorialService], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

ठीक कुछ डिबगिंग के बाद, अगर मैं इसे अमूर्त नहीं बनाने के लिए और के लिए इसे जोड़ने घोषणाएं यह काम करती है। क्या इसका मतलब है कि मैं एक वर्ग को सार के रूप में चिह्नित नहीं कर सकता? यह सही प्रतीत नहीं होता ...

+0

अपने मॉड्यूल app.module.ts – Aravind

+0

@Aravind ठीक के लिए कोड जोड़ें। मैं घोषणा एरे में ट्यूटोरियल डायरेक्टिव नहीं जोड़ सकता। बस आपको जानकारी दे रहा था। – Steveadoo

+0

ठीक है, अगर मैं इसे अमूर्त नहीं बनाता हूं और इसे घोषणाओं में जोड़ता हूं तो यह काम करता है। क्या इसका मतलब है कि मैं एक वर्ग को सार के रूप में चिह्नित नहीं कर सकता? यह सही प्रतीत नहीं होता है ... – Steveadoo

उत्तर

0

हाँ .. यह सच है कि अगर आप एक अमूर्त वर्ग बना सकते हैं और एक निर्देश नियंत्रक के रूप में उपयोग करने की कोशिश है, यह कारण काम नहीं करेगा है documentation

पर यहाँ है enter image description here

नीचे के रूप में प्रलेखन के हाइलाइट किए गए हिस्से जब कभी आप एक निर्देश बनाने कोणीय निर्देश के नियंत्रक वर्ग का एक नया उदाहरण बनाता है। जब आप एक अमूर्त वर्ग का उपयोग करते हैं, तो आपके पास इसके लिए उदाहरण नहीं हो सकता है और इसलिए यह आपके मामले में विफल रहता है

+4

पर इसके लिए एक मुद्दा उठाया गया है मेरे पास एक कार्यान्वयन वर्ग है जो केवल बेस क्लास से विरासत में मिलता है जो उदाहरण कोणीय होगा बनाना, अमूर्त नहीं। यह सब काम करता है अगर मैं जेआईटी का उपयोग करता हूं, लेकिन एओटी नहीं। मुझे यकीन नहीं है कि यह है। – Steveadoo

+1

यहां एक ही समस्या है, क्या आपके पास कोई कामकाज है? – godzsa

2

अमूर्त वर्ग से @ कॉम्पोनेंट सजावट को हटा दें।

+0

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

+0

मुझे यह काम करने के लिए @Component के स्थान पर @Injectable() को भी जोड़ना था – apricity

+0

आईएमओ यह समाधान सबसे अधिक समझ में आता है; चूंकि यह अमूर्त है, इसे वास्तव में नहीं माना जा सकता है कि कोणीय एक घटक के रूप में परिभाषित करता है। –

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