Las entradas están dentro de un diálogo modal. No tengo idea de por qué no funciona. Revisé los documentos oficiales y enumeraba el enfoque como algo que puede pasar al elemento, pero no funciona.
¿Alguien sabe por qué?
Material angular - Documentos de entrada
<form class="example-form"> <md-input-container class="example-full-width" style="width: 300px; padding: 5px; border-radius: 10px;"> <input mdInput type="email" name="to" placeholder="Email"> <md-error></md-error> </md-input-container> <md-input-container focus focused> <input mdInput type="text" name="a" placeholder="zzzz" focus focused (focus)=""> </md-input-container> </form>Sus intentos no funcionan porque:
focused es una propiedad que impulsa la clase mat-focused en mdInputContainer . Puede usarlo para saber si su entrada está enfocada o no. No puede usarlo para cambiar el estado de enfoque.focus es un método en mdInput que le permite enfocar la entrada mediante programación. Puede llamar a myInput.focus() con myInput siendo algo así como ViewChild('myInput') por ejemplo. Pero la forma más sencilla de lograr lo que desea es utilizar el atributo de autofocus estándar:
<md-input-container> <input mdInput type="text" name="a" placeholder="zzzz" autofocus> </md-input-container><form class="example-form"> <md-input-container class="example-full-width" style="width: 300px; padding: 5px; border-radius: 10px;"> <input mdInput #emailInput="matInput" type="email" name="to" placeholder="Email"> <md-error></md-error> </md-input-container> </form>Luego en el controlador:
@ViewChild('emailInput') searchInput: MatInput; .... ngAfterViewInit() { this.emailInput.focus(); }Lo que hace this.emailInput.focus() es en realidad "elementRef.nativeElement.focus()" https://github.com/angular/material2/blob/master/src/lib/input/input.ts#L287
para que puedas hacer eso tú mismo como:
this.emailInput.nativeElement.focus()