Как в angular dart с помощью клавиш со стрелками вверх / вниз перемещаться по списку?

#angular-dart

#angular-dart

Вопрос:

Используя angular dart, у меня есть диалоговое окно материала с основным списком в нем. Когда появится диалоговое окно, я хочу, чтобы конечный пользователь мог перемещаться по списку с помощью клавиш со стрелками (вверх / вниз).

 <modal *ngIf="visible" [visible]="visible">
    <material-dialog headered class="headered-dialog">
        <div header>
            <h1>List Demo</h1>
        </div>

        <form (ngSubmit)="onSubmit()" #heroForm="ngForm">
            <div class="list-body form-control">
                <ul>
                    <li *ngFor="let item of items; let i=index">
                        <div>{{item.name}}</div>
                    </li>
                </ul>
            </div>
        </form>

    </material-dialog>
</modal>
  

Ответ №1:

пакет: angular_components предоставляет MaterialListComponent и FocusListDirective , которые поддерживают навигацию вверх / вниз

https://dart-lang.github.io/angular_components/#/material_list

Вы можете использовать их вместе следующим образом

 <material-list focusList>
  <material-list-item *ngFor="let item of items; let i=index">
    <div>{{item.name}}</div>
  </material-list-item>
</material-list>
  

Никогда не пробовал, но вы также должны иметь возможность использовать FocusListDirective для любого элемента.

 <ul focusList>
  <li *ngFor="let item of items; let i=index">
    <div>{{item.name}}</div>
  </li>
</ul>
  

Комментарии:

1. Это здорово, и я заставил его работать, за исключением двух проблем. Когда список теряет фокус, выделение выбранного элемента исчезает. Возможно, именно так работает этот элемент управления. Другое дело, что когда я перемещаюсь с помощью клавиатуры, я не получаю событие (триггер), которое я получаю, когда я нажимаю на элемент в списке. Вероятно, мне нужно другое событие, и я продолжу поиск этого.