用jquery选择ng-select

时间:2017-11-15 17:15:04

标签: jquery angular angular2-template angular2-forms

我的页面上的第一个控件需要在页面最初加载时具有输入焦点,不幸的是,在我的情况下,该控件是ng-select。

所以,在我的ang2模板中的某个地方:

$("#mySelect > div").focus();
$("#mySelect > div").select();

在我的ngAfterViewInit中,我有:

   public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter the sequence with spaces e.g. 1 3 5 3 1 1 3 5 ");
    String input = sc.nextLine();
    String[] numbers = input.split("\\s+");

    List<String> result = new ArrayList<>();
    for (int x = 0; x < numbers.length; x++) {
        String item = numbers[x];
        if (result.contains(item)) continue;
        result.add(item);
    }
    System.out.println(String.join(" ", result));
}

(也尝试删除div)

唉,这不起作用。

注意: 这不是&#34;在AngularJS&#34;中将默认焦点放在元素上的最简单方法是什么?这个问题是指一个输入控件,所以基本的jquery焦点/选择是有效的。这特别指的是ng-select(渲染为一堆儿童div)。

2 个答案:

答案 0 :(得分:1)

你可以在没有jQuery的情况下做到这一点:

&#13;
&#13;
@ViewChild('yourFieldReference') fieldRefName: ElementRef;

.
.
.
.

ngOnInit() {
 this.fieldRefName.nativeElement.focus();
}
&#13;
<input #yourFieldReference id="fieldID">
&#13;
&#13;
&#13;

我已经使用input完成了它,但你可以使用任何HTML元素标记来完成它

答案 1 :(得分:1)

这段代码对我有用,试试这个

<ng-select #myInput id="mySelect" class="form-control" [options]="_myOptions" [(ngModel)]="model.SelectId" *ngIf=initDone' name=" mySelect" style="z-index: 10">
</ng-select>

并在您的component.ts中,使用viewchild和renderer来获取元素。 AfterViewInit有助于在呈现html之后将其集中。 (在OnInit()上遇到问题,这就是为什么)

import {ViewChild, Component, AfterViewInit, ElementRef, Renderer} from 'angular2/core';

export class App {
  @ViewChild('myInput') selectFocus:ElementRef;

  constructor(private _renderer : Renderer) {

  }

  public ngAfterViewInit() {
    this._renderer.invokeElementMethod(this.selectFocus.nativeElement, 'focus', []);
  }
}