我有一个输入为<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 -->
答案 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()