2017-03-17 88 views
4

我看到了如何設置自動對焦通過創建一個指令或HTML自動對焦在angularjs提交了輸入的許多職位,是否有一個快速簡便的方法來設置角度聚焦(角2,角4等)如何設置自動對焦的角度或角2不angularjs

+1

做到這一點'elem.focus()' – yurzui

+0

放置位置elem.focus()。在complaint.ts右 –

+0

並沒有爲我工作的全部,雖然它的HTML 5特性內。 –

回答

6

在HTML添加#nameit以獲得其在分量代碼的參考。

<input type="text" name="me" #nameit> 

然後將自動添加到它。

@ViewChild('nameit') private elementRef: ElementRef; 

    public ngAfterViewInit(): void { 
    this.elementRef.nativeElement.focus(); 
    } 
+1

這對我的作品 –

+1

請注意,這可以給iOS的一個可怕的用戶體驗,因爲鍵盤會自動顯示並覆蓋用戶屏幕的一半。只有在需要輸入的組件中才能使用它。 – andreas

+0

更新:在4角與材料設計組件我做:'@ViewChild( 'myInput',{閱讀:MatInput})stateTypeahead:MatInput;'然後該開始工作:'this.myInput.focus();'(難道不需要'nativeElement' – Red3

-2
<input type="text" #textInput placeholder="something" (focus)="someFunction(textInput.value)"/> 

<input type="text" #textInput placeholder="something" (keyup.enter)="someMethod(textInput.value)"/> 
+0

我不需要爲NG-焦點換貨或對焦點執行的功能,我想這樣做自動對焦時,任何人都可以在該網頁上,如果該組件是那裏將焦點輸入字段。 –

2

Aniruddha Das的答案在某些情況下效果很好。然而,如果這被應用於與需要驗證基於模板的形式,您可能會收到以下錯誤:

ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after >it was checked. Previous value: 'false'. Current value: 'true'.

一種解決方法是包裝內ngInit(對焦()調用),而不是ngAfterViewInit() 。因此,在Aniduddha的答案延伸:

在HTML中#namedReference添加到組件:

<input type="text" 
    placeholder="Your full name" 
    name="name" 
    ngModel 
    #fullName="ngModel" 
    required 
    #nameit> 

然後使用onNgInit()來自動對焦應用到其中:

@ViewChild('nameit') private elementRef: ElementRef; 

ngOnInit() { 
    this.elementRef.nativeElement.focus(); 
} 
+0

yap。聽起來不錯! –

0

可以用最votted答案的爲例,但是你需要一些時間來把你的焦點的setTimeout內爲做一個「異步」的呼叫。在我的情況下,我需要將setTimeout放置在角材料的mat-autocomplete組件的選定過濾器中。

我的代碼看起來象

setTimeout(() => this.qtdeRef.nativeElement.focus());