2016-08-10 16 views
5

जब मैं कोणीय 1.5 प्रदान करता हूं तो ब्रांड नया घटक बनाने के लिए angular.component() का उपयोग करता हूं, कोई लिंक फ़ंक्शन नहीं है, इसलिए ngModelController या किसी अन्य नियंत्रक इंजेक्शन का पुराना तरीका काम नहीं करता है।Angular1.5 घटकों में ngModelController तक कैसे पहुंचे?

require: 'ngModel', link: function(scope, element, attrs, ctrls)

ऊपर कोड ngModelController तक पहुँचने के लिए एक निर्देश के लिए है। हम इसे घटक में कैसे एक्सेस करते हैं?

उत्तर

3
बजाय एक ctrls सरणी होने का

, तो आप उन्हें अब नाम से, करने के लिए bindings जैसे उपयोग मिलता है:

class MyComponentController implements ng.IComponentController { 

    public modelCtrl: ng.INgModelController; 
    ... 
    ... 
    // use modelCtrl here 
    // instead of ctrls[0] 
    ... 
    ... 
} 

const MyComponent: ng.IComponentOptions = { 
    template: '...', 
    bindings: {...}, 
    require: {modelCtrl: 'ngModel'}, 
    controller: MyComponentController 
} 

angular.module('myModule').component('MyComponent', MyComponent); 

या, यदि आप सादा जे एस पसंद करते हैं:

function MyComponentController() { 
    ... 
    ... 
    // use this.modelCtrl here 
    ... 
    ... 
} 

var MyComponent = { 
    template: '...', 
    bindings: {...}, 
    require: { modelCtrl: 'ngModel' }, 
    controller: MyComponentController 
}; 

angular.module('myModule').component('MyComponent', MyComponent); 
+0

यू एक ES5 दे सकते हैं बराबर कोड ?? – Plankton

+0

इसलिए मैंने 1.5.8 के साथ यह कोशिश की और $ pristine, $ valid आदि तक पहुंच प्राप्त करना संभव नहीं है उदाहरण के लिए। this.modelCtrl। $ pristine सुलभ नहीं है और एक त्रुटि फेंक दी गई है कि प्राचीन अपरिभाषित पर उपलब्ध नहीं है। क्या आप यह दिखा सकते हैं कि हम $ pristine, $ valid, $$ formatters आदि का उपयोग कैसे कर सकते हैं। ModelCtrl ??? – Plankton

+1

उदाहरण के लिए देखें https://jsfiddle.net/frederikprijck/pwx30x6z/ – naftalip

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