2016-07-02 13 views
13

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

<ion-input> 
    <input> 
    <button></button> 
</ion-input> 
मेरी ElementRef.nativeElement रूप

और मैं इनपुट तत्व के लिए एक संदर्भ पाने के लिए की जरूरत है। मैं उसे कैसे कर सकता हूँ? साथ ही, यह निर्देश किसी तृतीय-पक्ष घटक पर जा रहा है, इसलिए मैं टेम्पलेट को संपादित करने या elementRefs जोड़ने में सक्षम नहीं हूं।

+1

कोशिश उपयोग करने के लिए 'firstElementChild' https://plnkr.co/edit/UDoT7WzVXx582uM8ZFYK?p=preview – yurzui

उत्तर

25

यदि आपके पास elementRef है तो वहां से आप सामान्य DOM विधियों का उपयोग कर सकते हैं, उदाहरण के लिए Element.querySelector। आपको शायद यह भी ngOnInit हुक में यह करने के लिए चाहते हो जाएगा:

ngOnInit() { 
    let input = elementRef.nativeElement.querySelector('input') 
} 
+0

क्षमा करें, मैं सिर्फ यह अच्छी तरह से समझाया नहीं किया है। एचटीएमएल तीसरे पक्ष के घटक का नतीजा है, मैं वहां एचटीएमएल नहीं बदल सकता। मैं इनपुट फ़ील्ड में हेरफेर करने के लिए एक विशेषता निर्देश बनाने की कोशिश कर रहा हूं। क्या यह समझ में आता है कि मैं क्या कह रहा हूं? –

+1

मैं देखता हूं। फिर ngOnInit में इसे 'elementRef.nativeElement.querySelector (' input ')' के रूप में पढ़ने का प्रयास करें। – dfsq

+0

वह टिकट है। बहुत बहुत धन्यवाद। यदि आप इसके लिए उत्तर बनाते हैं, तो मैं इसे चिह्नित करूंगा। –

8

आप @ViewChild डेकोरेटर का उपयोग करना चाहिए।

सबसे पहले, उस बच्चे तत्व पर एक आईडी जोड़ें जिसे आप पुनर्प्राप्त करना चाहते हैं।

<ion-input> 
    <input #input> 
    <button></button> 
</ion-input> 

फिर इसे अपने घटक में पुनर्प्राप्त करें।

import { Component, ViewChild, ElementRef, OnInit } from "@angular/core" 
@Component({ 
    selector: "my-component", 
    template: ` 
    <ion-input> 
     <input #input> 
     <button></button> 
    </ion-input>` 
}) 
export class MyComponent implements OnInit { 
    @ViewChild("input") inputChild: ElementRef; 

    ngOnInit() { 
    haveFunWith(inputChild); 
    } 
} 

अधिक यहाँ जानकारी: https://angular.io/docs/ts/latest/api/core/index/ViewChild-decorator.html

+1

इसे पढ़ने वाले किसी के लिए, यह ऐसा करने का कोणीय (सबसे तकनीकी रूप से सही) तरीका है। –