使用指令聚焦输入字段



我正在使用一个指令来聚焦输入字段。这在第一次进入页面时效果很好。但是当我向后导航或弹出到特定页面时,不会调用此方法。我想这是因为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);
   }
   }

相关内容

  • 没有找到相关文章

最新更新