2015-12-21 14 views
17

में एक निर्देश पंजीकृत करें मैं एक कोणीय 2 अनुप्रयोग विकसित कर रहा हूं।वैश्विक स्तर पर angular2

@Directive({ 
    selector: '[href]', 
}) 

export class MyHrefDirective { 
    constructor() { 
     // whatever 
    } 
} 

लेकिन यह कैसे पर:

angular.module('whatever.module', []).directive('href', function() { 
    return { 
     restrict: 'A', 
     link: function($scope, $element, $attrs) { 
      // do stuff 
     } 
    }; 
}); 

angular2 में मैं इस तरह एक निर्देश लिख सकते हैं: मैं सभी लिंक करने के लिए विशेष व्यवहार को जोड़ने के लिए इतना कोणीय 1.xi में सिर्फ इस तरह एक निर्देश लिखते थे की जरूरत है क्या मैं वैश्विक स्तर पर उस निर्देश का उपयोग करने के लिए आवेदन कर सकता हूं? मेरे पास लिंक के साथ विचारों का एक टन है। क्या मुझे इसे आयात करना है और उन सभी घटकों में directives सरणी में निर्दिष्ट करना है (जो एक एलओटी है)?

मैं bootstrap कार्य करने के लिए यह इंजेक्शन लगाने की कोशिश की है जैसे आप विश्व स्तर पर एक उदाहरण लेकिन बात नहीं बनी

+0

मुझे लगता है कि यदि आप अपना निर्देश ग्लोबली प्रदान करते हैं तो मेरा मतलब बूटस्ट्रिपिंग रूट घटक के समय होता है, तो प्रत्येक घटक –

+0

की सरणी में आयात करने की आवश्यकता नहीं है यदि आपने मेरे प्रश्न में अंतिम वाक्य पढ़ ली है, तो आप जानते होंगे मैंने पहले ही कोशिश की है। – kamilkp

उत्तर

30

मेरे समझ है सेवाओं के साथ क्या करना चाहिए रहे हैं आप सभी कस्टम में शामिल होना है वह यह है कि घटक स्तर पर निर्देश। केवल PLATFORM_DIRECTIVES को निहित रूप से शामिल किया गया है (ngFor, ngIf आदि)।

हालांकि, अगर आप एक PLATFORM_DIRECTIVE

import { provide, PLATFORM_DIRECTIVES } from '@angular/core'; 

bootstrap(RootCmp, [ 
    provide(PLATFORM_DIRECTIVES, {useValue: YourCustomDirective, multi: true}), 
]); 

यहाँ के रूप में अपने स्वयं के कस्टम निर्देश रजिस्टर कर सकते हैं एक लेख है कि इस प्रक्रिया के बारे में अधिक बात करती है: http://blog.thoughtram.io/angular2/2015/11/23/multi-providers-in-angular-2.html

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

+1

धन्यवाद। यह एक उत्कृष्ट answear है, मैं इसके बारे में पता नहीं था। एक जादू की तरह काम करता है। – kamilkp

+1

नोट: कि 'HTTP_PROVIDERS' जैसे किसी भी' _PROVIDERS' को सीधे सूची में भेजा जा सकता है, जबकि सभी निर्देशों को 'प्रदान (..) 'का उपयोग करके पारित किया जाना चाहिए जैसा कि पूरी तरह से टीजीएच द्वारा ऊपर वर्णित है। इसे कस्टम निर्देश नहीं होना चाहिए, बल्कि बाहरी एनपीएम लाइब्रेरी आधारित निर्देशों की भी आवश्यकता है, जैसे भौतिक 2 लाइब्रेरी से निर्देशों को बूटस्ट्रैप फ़ंक्शन में इस तरह से पारित किया जाना चाहिए। –

+1

शायद इस उत्तर को अपडेट करना चाहते हैं क्योंकि यह अब रिलीज़ नहीं है –

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