How to set focus on element with binding?

后端 未结 9 958
南方客
南方客 2020-12-09 10:23

In Angular2 how can I set binding on element focus. I don\'t want to set it with elementRef. I think in AngularJS there is ngFocus directive In Angular2 there is no such dir

9条回答
  •  -上瘾入骨i
    2020-12-09 10:27

    Renderer service is now deprecated (as of Angular 4.x) The new Renderer2 service doesn't have the invokeElementMethod. What you can do is to get a reference to the element like this:

    const element = this.renderer.selectRootElement('#elementId');
    

    And then you can use that to focus on that element like so:

    element.focus();
    

    More on how selectRootElement works here:

    EDIT:

    If the element doesn't get focused the common issue is that the element is not ready. (eg.: disabled, hidden etc.). You can do this:

    setTimeout(() => element.focus(), 0);
    

    This will create a macrotask that will run in the next VM turn, so if you enabled the element the focus will run properly.

提交回复
热议问题