2017-02-22 57 views
1

我是Angular Material 2,并且无法使用SideNav将重点放在特定元素上。我已经尝试了几种似乎不起作用的方法。我有一个侧面的导航组件作为例如:使用Angular Material 2和SideNav的元素焦点

<md-sidenav #globalsidenav (open)="onNavWindowOpened($event)"> 

我创建了一个元素就像这样:

<a #manageAccount>Manage Account></a> 

里面我的组件通过我ViewChild

@ViewChild('manageAccount') manageAccount; 
使用元素的引用

然后在打开的事件处理程序尝试和设置焦点上的元素:

onNavWindowOpened(event) { 
    console.log('open event received...'); 

    this.manageAccount.nativeElement.focus(); 
} 

我也尝试过'手动'查找元素并改变焦点,但无济于事。有没有其他方法可以在这样的情况下工作?

+0

也许你需要阻止事件冒泡这里提到https://developer.mozilla.org/en/docs/Web/API/HTMLElement/focus#笔记 – shusson

回答

0

你必须使用下面的属性指令:

cdkFocusRegionstart 

在您的例子:

<a #manageAccount cdkFocusRegionstart>Manage Account></a> 

然后,锚应尽快sidenav打开聚焦。

在Github上查看这里讨论: https://github.com/angular/material2/issues/3265