我正在使用一个指令来聚焦输入字段。这在第一次进入页面时效果很好。但是当我向后导航或弹出到特定页面时,不会调用此方法。我想这是因为ngAfterViewInit()
不再被召唤了。我尝试使用ionViewDidEnter()
/onPageDidEnter()
但在这种情况下,根本不调用焦点。
在某些页面中使用:
<ion-input type="text" [(ngModel)]="matrikel" focus>
焦点器.ts
@Directive({
selector: '[focus]' // Attribute selector
})
export class FocusDirective {
@Input() focus: any;
constructor(private el: ElementRef, private renderer: Renderer, private globalVariables: GlobalsVariable) { }
ngAfterViewInit(){
const searchInput = this.el.nativeElement.querySelector('input');
setTimeout(() => {
this.renderer.invokeElementMethod(searchInput, 'focus', []);
}, 650);
}
}
你必须
使用ionViewCanEnter()
。这将在ionViewDidLoad()
之前打电话.
.html
<ion-input #focusInput type="text" [(ngModel)]="matrikel">
焦点器.ts
import { ViewChild } from '@angular/core';
export class FocusDirective {
@ViewChild('focusInput') focus: any;
constructor(private el: ElementRef, private renderer: Renderer, private globalVariables: GlobalsVariable) { }
ionViewCanEnter() {
setTimeout(() => {
this.focus.setFocus();
}, 500);
}
}