Мы разработали обходной путь, который закрывает раскрывающийся список при навигации по нему с помощью клавиатуры.
Этот обходной путь потребовал создания идентификатора пользователя для каждого компонента.
...
import { v4 as uuidv4 } from "uuid";
@Component({
selector: "app-flyout-component",
templateUrl: "./flyout-component.component.html",
styleUrls: ["./flyout-component.component.css"],
providers: [NgbDropdownConfig]
})
export class FlyoutComponentComponent implements OnInit {
@ViewChild("drop", { static: false }) drop: any;
initDone = false;
uid: string;
constructor(ngbDropdownConfig: NgbDropdownConfig) {
this.uid = this.$generateUUID();
}
Идентификатор uid используется для определения, какая кнопка ngbDropdownToggle была нажата. В обработчике кликов мы устанавливаем фокус на первый элемент в раскрывающемся списке.
Обходной путь также имеет обработчик события focuslost, который закрывает раскрывающийся список при выключении табуляции.
Код в оригинальном стеке * блиц https://stackblitz.com/edit/angular-xg5veq-zbtuys