2017-06-11 12 views
6

Odağı (tıklama) olayıyla bir girişe nasıl odaklayabilirim? Ben yerinde bu işlevi var ama açıkça denemek şey (burada açısal acemi)Açısal 2/4 ayarlı giriş elemanına odaklanma

sTbState: string = 'invisible'; 
private element: ElementRef; 
toggleSt() { 
    this.sTbState = (this.sTbState === 'invisible' ? 'visible' : 'invisible'); 
    if (this.sTbState === 'visible') { 
    (this.element.nativeElement).find('#mobileSearch').focus(); 
    } 
} 

cevap

1

eksik bu:

size HTML dosyası: ts

<button type="button" (click)="toggleSt($event, toFocus)">Focus</button> 

<!-- Input to focus --> 
<input #toFocus> 

Dosya:

sTbState: string = 'invisible'; 

toggleSt(e, el) { 
    this.sTbState = (this.sTbState === 'invisible' ? 'visible' : 'invisible'); 
    if (this.sTbState === 'visible') { 
    el.focus(); 
    } 
} 
+0

Cevabınıza bazı yazım hataları/hatalar giderdim. – developer033

+0

@ developer033 teşekkürler :) –

+0

Yanıtlarınız için çok teşekkür ederim. Denedim ama konsolda hiçbir değişiklik ve DOM hatası yoktu. Ts dosyasında bir şeyleri almayı unuttum mu? – Dev

4

Bunun için @ViewChild dekoratör kullanabilirsiniz. Belgeler, https://angular.io/api/core/ViewChild adresindedir. http://plnkr.co/edit/KvUmkuVBVbtL1AxFvU3F

Bu kod özü, iner, giriş elemanı ve kablolama kadar Şablonunuzdaki bir tıklama olayı bir isim vererek:

İşte çalışan bir plnkr bu. senin bileşeninde

<input #myInput /> 
<button (click)="focusInput()">Click</button> 

, o zaman, eleman (lar) için arama ihtiyacınız olan fonksiyonu gerçekleştirmek için tıklayın işleyicisi uygulamak için @ViewChild veya @ViewChildren uygular.

export class App implements AfterViewInit { 
    @ViewChild("myInput") inputEl: ElementRef; 

    focusInput() { 
    this.inputEl.nativeElement.focus() 
    } 

Şimdi, düğmeyi tıklattıktan sonra giriş alanında yanıp sönen düzeltme işareti görüntülenir. ElementRef kullanımı, XSS saldırıları (https://angular.io/api/core/ElementRef) gibi bir güvenlik riski, ve daha az taşınabilir bileşenlerle sonuçlandığı için önerilmez.

Ayrıca, ngAfterViewInit olayının ortaya çıkması durumunda, inputEl değişkeninin kullanılabilir olacağını unutmayın.