简体   繁体   English

如何使用 Angular ngFor 创建 Bootstrap 导航栏链接

[英]How to use Angular ngFor to create Bootstrap navbar links

在此处输入图像描述

The Nav Link 1 , Nav Link 2 and Nav Link 3 buttons are defined in app.component.html with: Nav Link 1Nav Link 2Nav Link 3按钮在app.component.html中定义:

<ul class="navbar-nav mr-auto">
  <li class="nav-item active">
    <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
  </li>
  <li class="nav-item">
    <a class="nav-link" (click)="onNavClick()" >Nav Link 1</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" (click)="onNavClick()" >Nav Link 2</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" (click)="onNavClick()" >Nav Link 3</a>
  </li>
</ul>

Another three nav links Nav Link 4 , Nav Link 5 and Nav Link 6 are created with另外三个导航链接Nav Link 4Nav Link 5Nav Link 6是使用创建的

<li class="nav-item" *ngFor="let name of names">
    <a class="nav-link" >{{name}}</a>
</li>

Apparently, the ones that were created with *ngFor directive are rendered differently and loose any styling.显然,使用*ngFor指令创建的那些会以不同的方式呈现并松散任何样式。 How to fix this issue> Here is the link to Stackblitz project:如何解决此问题> 这是 Stackblitz 项目的链接:

https://stackblitz.com/edit/angular-ivy-sff2wk?file=src%2Fapp%2Fapp.component.html https://stackblitz.com/edit/angular-ivy-sff2wk?file=src%2Fapp%2Fapp.component.html

It happens because you are placing li tag after ul tag..发生这种情况是因为您将li标签放在ul标签之后。

So you need to include,所以你需要包括,

<li class="nav-item" *ngFor="let name of names">
    <a class="nav-link" >{{name}}</a>
</li>

inside ul tag like,ul标签里面,

<ul class="navbar-nav mr-auto">
  <li class="nav-item active">
    <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
  </li>
  <li class="nav-item">
    <a class="nav-link" (click)="onNavClick()" >Nav Link 1</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" (click)="onNavClick()" >Nav Link 2</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" (click)="onNavClick()" >Nav Link 3</a>
  </li>
  <li class="nav-item" *ngFor="let name of names">
    <a class="nav-link" >{{name}}</a>
  </li>
</ul>

Forked Stackblitz here在这里分叉 Stackblitz

I would recommend to use ng-container我建议使用ng-container

<ul class="navbar-nav mr-auto">
....
  <ng-container *ngFor="let name of names">
    <li class="nav-item">
      <a class="nav-link" >{{name}}</a>
    </li>
  </ng-container>
</ul>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM