可以使用nativeEloment中的setFocus方法设置焦点。
但是如何移除焦点?
如何从Angular 2 + / Ionic 3应用程序中删除光标并取消选择模板中的输入?
我需要移除焦点,因为移动键盘在输入有焦点时保持打开状态。
编辑:输入是Ionic2 +的离子输入。
答案 0 :(得分:4)
1)在组件模板中为输入添加模板变量引用:
<ion-input #textInput>
2)将ElementRef
和ViewChild
添加到组件的导入中:
import { ElementRef, ViewChild } from '@angular/core'
3)将@ViewChild
变量和相关方法添加到组件中:
export class AppComponent {
@ViewChild('textInput') textInput;
setFocus() {
this.textInput.nativeElement.focus();
}
removeFocus() {
this.textInput.nativeElement.blur();
}
}
您可以通过多种方式触发setFocus()
或removeFocus()
。这是一个例子:
# app.component.html
<ion-input #textInput>
# app.component.ts
import { HostListener } from '@angular/core';
export class AppComponent {
[previous code elided for readability]
isInputActive: boolean;
@HostListener('document:click', ['$event'])
handleClickEvent(event: MouseEvent): void {
if (document.activeElement !== this.textInput.nativeElement) {
this.textInput.nativeElement.blur();
}
}
}
答案 1 :(得分:2)
适用于Ionic 4用户;)
尝试了多种解决方案以消除/隐藏搜索输入的键盘后,我发现了一种从您的解决方案@ zach-newburgh中汲取灵感的方法。
无法正常工作:
this.keyboard.hide()
#searchInput
(keyup.enter)="searchInput.blur()"
this.searchInput.nativeElement.blur();
this.searchInput.getElementRef().nativeElement.blur();
仅适用的解决方案
this.searchInput._native.nativeElement.blur();
ts
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { TextInput } from 'ionic-angular';
...
@ViewChild('searchInput') searchInput: TextInput;
...
onSearchEnter() {
this.searchInput._native.nativeElement.blur();
}
html
<ion-input #searchInput
type="search"
(keyup.enter)="onSearchEnter()"
[(ngModel)]="searchQuery"></ion-input>
html
<ion-input #searchInput
type="search"
(keyup.enter)="searchInput._native.nativeElement.blur()"
[(ngModel)]="searchQuery"></ion-input>
希望这会有所帮助。
答案 2 :(得分:0)
根据条件应用焦点和移除焦点:
if (condition) {
this.addressLine1.nativeElement.focus();
}else{
this.addressLine1.nativeElement.blur();
}
答案 3 :(得分:0)
这在 ionic 5 上对我有用
this.searchInput.getInputElement().then((input) => {
input.blur();
});