2015-10-15 20 views
17

कृपया आप मदद कर सकते हैं? बस कोणीय 2 से शुरू करना और निम्नलिखित समस्याएं हैं।कोणीय 2 बाहरी इनपुट

मेरे घटक नीचे है:

@Component({ 
    selector: 'myapp', 
    inputs: ['mynumber'] 
}) 
@View({ 
    template: `<p>The next number is {{ mynumber + 1 }}</p>' 
}) 
export class App { 
    mynumber: number; 
} 
bootstrap(App); 

मेरी HTML के अंदर:

<myapp [mynumber]='41'></myapp> 

लेकिन जब रन मैं निम्नलिखित:

अगले संख्या NaN

ऐसा लगता है सरल लेकिन मुझे कुछ याद आ रही है। जो मैं हासिल करने की कोशिश कर रहा हूं वह ऐप के बाहर से मूल्य को पास कर रहा है।

धन्यवाद।

+0

जड़ घटक में आदानों की स्थापना में कोई समस्या है कि:

वहाँ रास्ता मिल गया। एक बच्चे के घटक में 'mynumber' गुजरने का प्रयास करें और यह काम करना चाहिए। –

+0

हाय। आपके उत्तर के लिए धन्यवाद लेकिन मैं बाहरी कोणीय से मूल्य को पास करने की कोशिश कर रहा हूं। यकीन नहीं कैसे? चीयर्स – BoomBoomBoom

उत्तर

9

आप अपने आवेदन के मूल घटक के लिए संपत्ति बाइंडिंग (इनपुट) निर्दिष्ट नहीं कर सकते हैं। यदि आप वास्तव में इसके लिए कुछ बाध्यकारी निर्दिष्ट करना चाहते हैं तो आपको अतिरिक्त घटक का उपयोग करना चाहिए। this plunkers देखें।

import {Component, Input} from 'angular2/angular2' 

@Component({ 
    selector: 'myapp', 
    template: ` 
    <p>The next number is {{ mynumber + 1 }}</p> 
    ` 
}) 
class App { 
    @Input() mynumber: number; 
} 

@Component({ 
    selector: 'root', 
    directives: [App], 
    template: ` 
    <myapp [mynumber]="41"></myapp> 
    ` 
}) 
export class Root {} 
+1

कूल। धन्यवाद। मुझे लगता है कि मैं असंभव पूछ रहा हूँ। मैं मुख्य एचटीएमएल पेज पर अन्य नियंत्रण आदि से कुछ डेटा में फ़ीड करने की उम्मीद कर रहा था। सहायता के लिए धन्यवाद – BoomBoomBoom

5

का संभावित हल सीधे ElementRef का उपयोग कर इसे पढ़ रही है:

constructor(elementRef:ElementRef) { 
    console.log(elementRef.nativeElement.getAttribute('someattribute'); 
} 

और का उपयोग कर ElementRef

<myapp mynumber='41'></myapp> 

भी देखें https://github.com/angular/angular/issues/1858

4

अद्यतन की तरह उपयोग उत्तर देने के लिए: का उपयोग प्रतिपादक। इसके बजाए रूट रूट करें। कोई भी ElementRef.nativeElement का उपयोग करने का प्रयास कर रहा है शायद यह एक अंतिम उपाय आदि के बारे में विभिन्न चेतावनियों को देख रहा है। यहां एक संशोधित, सुरक्षित संस्करण है।

constructor(renderer: Renderer){ 
    let rootElement = renderer.selectRootElement('app-root'); 
    this.whateverInput = rootElement.getAttribute('my-attribute'); 
} 
2

का उपयोग कर उन लोगों के लिए कोणीय 4:

class Component { 
    constructor(@Attribute('attributeName') public param:String){ 
     /** some process with your injected param **/ 
    } 
} 

: आपको लगता है कि

<myapp mynumber='41'></myapp> 

की तरह एक विशेषता के रूप में उपयोग करने का निर्णय लेते तुम बस एनोटेशन @Attribute उस तरह इस्तेमाल कर सकते हैं परीक्षण और मेरे ऐप में सफलतापूर्वक काम किया। https://gillespie59.github.io/2015/10/08/angular2-attribute-decorator.html

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