sha*_*hah 3 typescript ionic3 angular
我试图专注ion-searchbar于按钮点击,但它无法正常工作.这是我的代码
打字稿
@ViewChild('search') search:ElementRef;
focusButton(){
console.log(this.search); //Searchbar {_config: Config, _elementRef: ElementRef, _renderer: RendererAdapter, _componentName: "searchbar", _mode: "md", …}
console.log(this.search.nativeElement); // null
this.search.nativeElement.focus(); // Cannot read property 'focus' of undefined
this.search.nativeElement.setFocus(); // Cannot read property 'setFocus' of undefined
}
Run Code Online (Sandbox Code Playgroud)
HTML
<ion-searchbar #search (ionCancel)="cancelSearch($event)" [showCancelButton]="true" [(ngModel)]="artists"></ion-searchbar>
<ion-buttons end>
<button [hidden]="showSearch" (click)="(showSearch = !showSearch) && focusButton()" ion-button icon-only>
<ion-icon name="search"></ion-icon>
</button>
</ion-buttons>
Run Code Online (Sandbox Code Playgroud)
控制台输出位于带代码的注释中.
希望你可以使用下面的代码来完成它.只需使用如下所示的尝试setTimeout.
html的
<ion-searchbar #search (ionCancel)="cancelSearch($event)"
[showCancelButton]="true" [(ngModel)]="artists"></ion-searchbar>
<ion-buttons end>
<button [hidden]="showSearch" (click)="(showSearch = !showSearch) && focusButton()" ion-button icon-only>
<ion-icon name="search"></ion-icon>
</button>
</ion-buttons>
Run Code Online (Sandbox Code Playgroud)
.TS
@ViewChild('search') search : any;
focusButton(): void {
setTimeout(() => {
this.search.setFocus();
}, 500);
}
Run Code Online (Sandbox Code Playgroud)
1-)导入 IonSearchBar 元素
import { IonSearchbar} from '@ionic/angular';
Run Code Online (Sandbox Code Playgroud)
2-)为 IonSearchBar 创建 ViewChild
@ViewChild(IonSearchbar) myInput: IonSearchbar;
Run Code Online (Sandbox Code Playgroud)
3-)设置超时焦点
setTimeout(() => { this.myInput.setFocus(); }, 150);
Run Code Online (Sandbox Code Playgroud)
--
在此处开放请求功能: ion-searchbar autofocus #17745
此致。
对于那些使用Angular 8和 Ionic 4 的人,可以设置一个标志static: false,该标志将认为*ngIf涉及并隐藏搜索栏。一旦*ngIf再次显示可视化组件(例如ion-searchbar)
@ViewChild('searchInput', {static: false}) searchInput: IonSearchbar;
constructor() { }
public setSearchbarVisible(isVisible) {
this.isSearchbarOpened = isVisible;
if (isVisible) {
setTimeout(() => {
this.searchInput.setFocus();
}, 100);
}
}
Run Code Online (Sandbox Code Playgroud)
向 中添加类型searchInput也将有助于方法和属性洞察,例如setFocus(). 这是整洁的代码,而不敢触及包装的本机元素。
| 归档时间: |
|
| 查看次数: |
4450 次 |
| 最近记录: |