Définir le focus sur <input> élément

Je suis en train de travailler d'une application front-end Angulaire 5, et j'ai besoin d'avoir une zone de recherche cachés, mais sur le clic d'un bouton, la boîte de recherche doit être affiché et concentré.

J'ai essayé quelques moyens trouvés sur StackOverflow à la directive, mais ne peut pas réussir.

Voici un exemple de code:

@Component({
   selector: 'my-app',
   template: `
    <div>
    <h2>Hello</h2>
    </div>
    <button (click) ="showSearch()">Show Search</button>
    <p></p>
    <form>
      <div >
        <input *ngIf="show" #search type="text"  />            
      </div>
    </form>
    `,
  })
  export class App implements AfterViewInit {
  @ViewChild('search') searchElement: ElementRef;

  show: false;
  name:string;
  constructor() {    
  }

  showSearch(){
    this.show = !this.show;    
    this.searchElement.nativeElement.focus();
    alert("focus");
  }

  ngAfterViewInit() {
    this.firstNameElement.nativeElement.focus();
  }

La zone de recherche n'est pas centrée.

Comment puis-je le faire?

InformationsquelleAutor Bob | 2018-04-24