javascript - 在 Typescript 中以编程方式折叠 Bootstrap 导航栏

标签 javascript angular twitter-bootstrap typescript

我正在使用 Bootstrap 的导航栏,并且可以通过在每个 li 上使用 data-toggledata-target 使其成功折叠元素。

这个答案展示了一种无需更改每个 li 即可做到这一点的方法: https://stackoverflow.com/a/42401686/279516

这是我的导航栏,其中包含两个 li 元素:

<div class="collapse navbar-collapse" id="navbarSupportedContent">
  <ul class="navbar-nav mr-auto">
    <li class="nav-item" data-toggle="collapse" data-target=".navbar-collapse.show">
      <a class="nav-link" href="#" routerLink="/servers">Servers</a>
    </li>
    <li class="nav-item" data-toggle="collapse" data-target=".navbar-collapse.show">
      <a class="nav-link" href="#" routerLink="/servers">Variables</a>
    </li>

我即将在 Angular 8 Typescript 文件中完成此任务:

export class AppComponent implements OnInit {
  ngOnInit(): void {
    const navbarItems = document.querySelectorAll('.navbar-nav>li');
    navbarItems.forEach(navbarItem => {
      navbarItem.addEventListener('click', () => {
        const navbar = document.querySelector('.navbar-collapse').collapse('hide');
      })
    });
  }
}

问题是最后一行:

Property collapse does not exist on type element.

首先,我应该做什么才能让它发挥作用? 二、有没有更好的办法?

我尝试将 navbar 转换为不同类型的 HTML 元素,但这也不起作用。

最佳答案

你可以用 Angular 的方式来做这件事。像这样:

<button class="navbar-toggler" type="button" (click)="showMenu=!showMenu">
    <span class="navbar-toggler-icon"></span>
 </button>
 <div class="collapse navbar-collapse" [ngClass]="{'show':showMenu}">
     ...
 </div>

关于javascript - 在 Typescript 中以编程方式折叠 Bootstrap 导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873229/

相关文章:

javascript - 如何将 JSON 图像值分配给 HTML img 标签

angular - Uncaught TypeError : r. existsSync 不是 Angular 6 和 Electron 桌面应用程序中的函数

Angular 订阅@Input 对象变化

html - 图标不在同一行

javascript - 缩短 x 轴上的月份刻度

javascript - 带有文件索引的 Node.js 文件服务器

javascript - 调整下拉菜单高度以显示更多选项(AngularJS Material )

javascript - 如何在formBuilder中比较两个值?

html - 导航栏和标题在移动设备上无法正确缩放

html - Bootstrap 布局在一行内具有可变高度的列内容,并将它们正确地包装在不同的屏幕上