2016-07-16 15 views
13

के लिए कोणीय 2 अधिभार ईवेंट मेरा अंतिम लक्ष्य बनाने पर टेक्स्टरेरा तत्व ऑटोफोकस बनाना है। मैंने onload पर e.target.focus() पर कॉल करने के लिए एक समाधान के बारे में सोचा है।देशी डीओएम तत्व

<textarea rows="8" col="60" (load)='handleLoad($event)'> 

और उसके बाद: की तरह कुछ

handleLoad(e){ 
    e.target.focus(); 
} 

समस्या कोणीय है load घटना नहीं पहचानता है।

पीएस: मैंने autofocus एक बार कोशिश की लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।

+0

टेक्स्टरेरा के लिए ऐसी कोई घटना नहीं है, लेकिन अगर आप कोणीय 2 – YOU

+0

में मौजूद हैं तो आप एनजी-इनड के ऑनलोड का उपयोग कर सकते हैं, मैं एक ही चीज़ की तलाश में था लेकिन कोई भाग्य नहीं था। –

उत्तर

18

आप ngAfterViewInit हुक में यह करने के लिए सक्षम होना चाहिए:

import { ViewChild, ElementRef, AfterViewInit } from '@angular/core' 

// ... 

export class Component implements AfterViewInit { 

    @ViewChild('textarea') textarea: ElementRef 

    ngAfterViewInit() { 
    this.textarea.nativeElement.focus() 
    } 
} 

कहाँ टेम्पलेट में आप टेम्पलेट चर निर्धारित करने की आवश्यकता:

<textarea #textarea rows="8" col="60"></textarea> 
+0

यह पूरी तरह से काम करता है। धन्यवाद। –

+0

यदि आप इस मार्ग को लेने जा रहे हैं, तो हुक आपको वास्तव में उपयोग करना चाहिए, 'ngAfterViewInit() 'है। वर्ग को तत्काल चालू करने के बाद 'ngOnInit()' कहा जाता है, लेकिन इस बात की कोई गारंटी नहीं है कि दृश्य पहले से ही प्रस्तुत किया जाएगा (और इस प्रकार, फोकस करने के लिए कोई 'देशी एलिमेंट' नहीं हो सकता है)। डीओएम प्रस्तुत करने के बाद 'ngAfterViewInit()' कहा जाता है। [कोणीय के जीवन चक्र हुक दस्तावेज़] देखें (https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html)। – jessepinho

+1

@ जेसेपिन्हो आप सही हैं, मैं सैंडविच के साथ किए जाने के बाद भी प्रश्न संपादित करने की योजना बना रहा था। धन्यवाद! – dfsq

10

the HTML5 autofocus attribute का प्रयास करें:

<textarea rows="8" col="60" autofocus> 

हमेशा जावास्क्रिप्ट में ऐसा करने के मुकाबले देशी डीओएम एपीआई का उपयोग करने के लिए बेहतर (और बहुत आसान!) 0

+0

मैं यह भी कहूंगा कि इसे इस तरह किया जाना चाहिए। हालांकि, समस्या यह है कि यह ज्यादातर मामलों में काम नहीं करता है। – dfsq

+0

@dfsq "ज्यादातर मामलों में" आपका क्या मतलब है? [ऐसा लगता है] (http://caniuse.com/#search=autofocus) यह बहुत अच्छी तरह से समर्थित है। – jessepinho

+0

मेरा मतलब है, यह पृष्ठ लोड पर HTML प्रदान किए जाने पर यह अच्छी तरह से काम करता है। यह विश्वसनीय रूप से काम नहीं करता है जब HTML को असीमित रूप से प्रस्तुत किया जाता है, आमतौर पर एसएपी में। यह परीक्षण जांचें जो मैं बना रहा था: http://plnkr.co/edit/rpNKQRYJh3DuPafaVzqz?p=preview – dfsq

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