2017-02-22 5 views
0

Я использую инструкцию *ngIf для включения и выключения панелей внутри гармонического элемента. Для требований доступности, когда одна панель закрывается (нажатием кнопки продолжения, чтобы перейти к следующему), а следующий открывается, мне нужно сосредоточиться, чтобы приземлиться на <legend>, который объявляет заголовок для следующей панели. Считыватель экрана (NVDA) читает текст, но до этого он считывает четыре строки, которых я не ожидаю. (Заменить сайта название с названием сайта) Она считывает:Angular2 - Как удалить фокус, когда элемент удаляется из DOM и переориентируется на новый добавленный элемент

  • сайт название - Mozilla Firefox
  • неизвестный
  • сайт название - Mozilla Firefox
  • сайт название - документ

, тогда он, наконец, читает заголовок следующего раздела. Причина, по которой это происходит, состоит в том, что у меня есть анимация с угловым сглаживанием/расширением, которая является панелью открытия/закрытия. Пока анимация происходит, она не может сфокусироваться на следующей панели <legend> и тем самым откладывая ее на 4 строки нежелательного текста.

Единственное решение, о котором я могу думать, - это что-то вроде того, когда панель рушится, я фокусирую внимание на выключенном пустом div, который ничего не будет читать и затем сбросит фокус на субтитры, когда анимация будет выполнена, но это кажется вид хаки. Есть ли другие решения для этой проблемы?

ответ

0

пут запросов в компоненте

@Component({ 
    queries : { 
     vc : new ng.core.ViewChildren('input') // depends on what you are adding dynamically, replace that with 'input' 
    } 
}) 

в классе добавить

ngAfterViewInit: function() { 

    this.vc.changes.subscribe(elements => { 
     elements.last.nativeElement.focus(); 
    }); 

}