【问题标题】:ng-bootstrap drop down menu does not seem to work with *ngForng-bootstrap 下拉菜单似乎不适用于 *ngFor
【发布时间】:2020-08-14 09:35:42
【问题描述】:

下拉菜单应该动态填充语言列表。我尝试使用 ngFor 来执行此操作,但下拉菜单中除了第一个之外没有任何列表项出现:

<nav class ="navbar navbar-light bg-light fixed-top">
  <div *ngIf="data.enableLanguageList && data.languageList?.length > 0" class="row">
    <div ngbDropdown class="col d-inline-block">
      <button ngbDropdownToggle 
              class="btn btn-success btn-lg dropdown-toggle" 
              id="languageSelect">
        <strong> Lang - {{ data.currentLanguage }} </strong>
      </button>
      <div ngbDropdownMenu 
           *ngFor="let lang of data.languageList;" 
            class="dropdown-menu" 
            aria-labelledby="languageSelect">
        <button ngbDropdownItem 
                class="dropdown-item" 
                [ngClass] = "[lang === data.currentLanguage ? 'active' : '']" 
                (click) = "setLanguage(lang)">
             <h5> <strong> {{ lang }} </strong> </h5>
        </button>
      </div>
    </div>
  </div>
</nav>

【问题讨论】:

  • 您的服务是否提供任何数据? data.languageList 包含什么?
  • 顺便说一句,将
    用于按钮文本似乎不正确。这对于屏幕阅读器来说会非常混乱。 h 标签用于标题。一些工具,包括屏幕阅读器,会根据h 标签构建目录
  • strong 标签仅用于样式时的类似问题(我想像这里)

标签: html css angular bootstrap-4 ng-bootstrap


【解决方案1】:

您将ngFor 应用于ngbDropdownMenu,同时需要在循环中创建多个ngbDropdownItems

      <div ngbDropdownMenu 
            class="dropdown-menu" 
            aria-labelledby="languageSelect">
        <button ngbDropdownItem 
                *ngFor="let lang of data.languageList;" 
                class="dropdown-item" 
                [ngClass] = "[lang === data.currentLanguage ? 'active' : '']" 
                (click) = "setLanguage(lang)">
             {{ lang }}
        </button>
      </div>

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2016-09-12
    • 1970-01-01
    • 2023-03-10
    • 2021-08-16
    • 2017-08-15
    相关资源
    最近更新 更多