2016-02-20 19 views
9

कोणीय 1 में हम निर्देशक विशेषता आवश्यक कर सकते हैं। हम एंगुलर 2 में @ इनपुट के साथ ऐसा कैसे करते हैं? दस्तावेज़ों का उल्लेख नहीं है।कोणीय 2 निर्देश पर @ इनपुट करें

ईजी।

Component({ 
    selector: 'my-dir', 
    template: '<div></div>' 
}) 
export class MyComponent { 
    @Input() a:number; // Make this a required attribute. Throw an exception if it doesnt exist 
    @Input() b:number; 

    constructor(){ 

    } 
} 

उत्तर

19

में चेक ngOnInit() (आदानों अभी तक जब निर्माता निष्पादित किया जाता है सेट नहीं हैं) विशेषता एक मूल्य है या नहीं।

Component({ 
    selector: 'my-dir', 
    template: '<div></div>' 
}) 
export class MyComponent { 
    @Input() a:number; // Make this a required attribute. Throw an exception if it doesnt exist 
    @Input() b:number; 

    constructor(){ 

    } 

    ngOnInit() { 
     if(null == a) throw new Error("Attribute 'a' is required"); 
    } 
} 

तुम भी ngOnChanges(changes) {...} में जाँच कर सकते हैं मूल्यों null करने के लिए सेट नहीं किया गया है। यह भी देखें https://angular.io/docs/ts/latest/api/core/OnChanges-interface.html

+0

आप हो सकता है अपरिभाषित की जांच भी करना चाहते हैं और इसके लिए एक विशिष्ट त्रुटि संदेश दें ... यदि कोई गुण विशेषता द्वारा पारित किया गया है और यह किसी अन्य कारण से गलत वर्तनी या अपरिभाषित है, तो यह उस तथ्य पर अधिक तेज़ी से ध्यान देगा, जिससे यह आसान हो जाएगा डीबग करने के लिए। – jpoveda

+0

धन्यवाद, लेकिन ढांचे द्वारा प्रदान की गई कोई व्यवस्था नहीं है, सही? –

+0

सही, वर्तमान में कोई ढांचा समर्थन नहीं है। –

4

आप इस तरह यह कर सकते हैं:

constructor() {} 
ngOnInit() { 
    if (!this.a) throw new Error(); 
} 
2

मेरे लिए, मैं था यह इस तरह से करने के लिए:

ngOnInit() { if(!this.hasOwnProperty('a') throw new Error("Attribute 'a' is required"); }

FYI करें, आप @Output निर्देशों की आवश्यकता के लिए चाहते हैं, तो इस कोशिश:

export class MyComponent { 
    @Output() myEvent = new EventEmitter(); // This a required event 

    ngOnInit() { 
     if(this.myEvent.observers.length === 0) throw new Error("Event 'myEvent' is required"); 
    } 
} 
संबंधित मुद्दे