尝试了html5自动对焦,但无法在Internet Explorer中使用。在组件内使用viewchildren / viewchild / elementref尝试过的解决方案,没有一个对我有效。我正在使用“@ angular / core”:“~2.2.3”。
任何人请为我提供一个有效的解决方案。
答案 0 :(得分:0)
我找到了以下解决方案,
import { Component, NgModule, Directive, ElementRef, Renderer } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
@Directive({
selector: 'form[setFocus]'
})
export class SelectFirstInputDirective {
constructor(private _eRef: ElementRef, private _renderer: Renderer) { }
private _getInputElement(nativeElement: any): any {
if (!nativeElement || !nativeElement.children) return undefined;
if (!nativeElement.children.length && nativeElement.localName === 'input' && !nativeElement.hidden) return nativeElement;
let input:any;
[].slice.call(nativeElement.children).every((c:any) => {
input = this._getInputElement(c);
if (input) return false; // break
return true; // continue!
});
return input;
}
ngAfterViewInit() {
let formChildren = [].slice.call(this._eRef.nativeElement.children);
formChildren.every((child:any) => {
let input = this._getInputElement(child);
if (input) {
this._renderer.invokeElementMethod(input, 'focus', []);
return false; // break!
}
return true; // continue!
});
}
}
@NgModule({
imports: [
BrowserModule],
declarations: [
AppComponent
, SelectFirstInputDirective],
bootstrap: [AppComponent]
})
<form [formGroup]="someForm" (ngSubmit)="someMethod(someForm)" novalidate setFocus>
答案 1 :(得分:-1)
这对我有用[autofocus]="true"
签出