Ionic V4-如何自动聚焦于输入?

时间:2019-02-27 20:41:24

标签: ionic4 autofocus

我有一个输入为<ion-input #codigobarras></ion-input>的视图

如何自动关注此输入?

我尝试了什么

@ViewChild('codigobarras') input_codigobarras: Input;

...

ionViewDidEnter() {
    this.input_codigobarras.focus(); // didn't work = temp2.focus is not a function
    this.input_codigobarras.focus.emit(); // didn't work = do nothing, just returns undefined
    this.input_codigobarras.getElementRef().nativeElement.focus() // didn't work = do nothing, just returns undefined
    this.input_codigobarras.setFocus(); // didn't work = do nothing, just returns undefined
}
<ion-input [autofocus]></ion-input> <!-- Didn't wrok -->

4 个答案:

答案 0 :(得分:3)

更通用的解决方案可以在您希望的时间和地点进行:

<ion-input ... #inputId></ion-input>

因此,在控制器中使用ViewChild时,您可以轻松地将重点放在以下位置:

@ViewChild('inputId', {static: false}) ionInput: { setFocus: () => void; };
...
setFocusOnInput() {
   this.ionInput.setFocus();
}

答案 1 :(得分:2)

这应该有效

<ion-input autofocus="true"></ion-input>

答案 2 :(得分:1)

加载项目后,您可以尝试使用ngOnChanges()触发ElementRef。

 @ViewChild('test') test: ElementRef;

 ngOnChanges(changes: SimpleChanges){
     if(changes.items) {
     this.test.nativeElement.firstChild['autofocus'] = 'true';
   }
}

和您的html

<div #test>
  <ion-input ></ion-input>
</div>

答案 3 :(得分:-1)

离子4/5

HTML

<ion-input ... #inputId></ion-input>

TS

export class SomePage {
....
@ViewChild('inputId', {static: false}) inputEl: IonInput;
....

focusOnElement() {
    this.tipDesc.setFocus();
}

离子3

@ViewChild('inputId') inputEl: TextInput;

要专注于输入时,调用 focusOnElement()