html - fokus för ng-select fungerar inte Angular 5
Jag försöker använda fokus för ng-select i Angular 5 men det fungerar inte
jag arbetar med ng2-select
Hur använder man fokus för ng-select i Angular 5?
<label class="input">
<input (blur)="goTo()" type="text">
</label>
<label class="select" >
<div *ngIf="items.length > 0" >
<ng-select #select [items]="items">
</ng-select>
</div>
</label>
@ViewChild('select') myElement: ElementRef;
goTo(){
this.myElement.element.nativeElement.focus();
}
Svar #1
det fungerar bra för mig,
@ViewChild('ngSelect') ngSelect: NgSelectComponent;
ngAfterViewInit() {
if (this.autofocus) {
setTimeout(() => {
this.ngSelect.focus();
});
}
}
referera https://github.com/ng-select/ng-select/issues/762
Svar #2
Ändra detta
goTo(){
this.myElement.element.nativeElement.focus();
}
till detta,
import { ChangeDetectorRef } from '@angular/core';
constructor (private cRef: ChangeDetectorRef) {}
// import 'SelectComponent' from your library for 'ng2-select'
goTo(){
let el = null;
if (this.items.length > 0) {
this.cRef.detectChanges();
el = (this.myElement.nativeElement as SelectComponent).element.nativeElement.querySelector('div.ui-select-container > input');
if (el) { el.focus(); }
}
}
Du kan behöva kontrollera om elementet är definierat eller inte (eller om du behöver ett extra 'nativeElement' där, men jag återanvänder i princip logiken här.
Bara en varningsnotering, detta kanske inte är en stabil lösning om biblioteket uppdateras för att byta namn på dessa klasser eller ändra mallen.
Hoppas det hjälper.
