在 ngfor angular 中添加一些控件

add some control inside ngfor angular

例如我有一个 ngfor

<ng-container *ngFor="let setting of settings | trackBy: trackById">
              <button mat-button [matMenuTriggerFor]="menu">Menu</button>
              <mat-menu #menu="matMenu">
                <button mat-menu-item>{{ setting.value.caption }}</button>
              </mat-menu>
</ng-container>

它将根据 ngfor 设置中的多少值显示一个按钮列表。

现在我想添加一些复选框,例如,但只有按钮号 1。

应该是这样的 more less

<button> 
<button><checkbox>
<button>

知道如何实现这些吗?

抱歉需要更新我的问题。 如果我想达到这样的效果如何

<button>
<button>
<checklist>
<button>

谢谢

在你的 ngFor 中引入 'first as' 并添加一个容器来检查它是否是迭代中的第一个元素:

<ng-container *ngFor="let setting of settings; first as isFirst; trackBy: trackById">
    (...code...)
    <button...></button>
    <ng-container *ngIf="isFirst">
        <checkbox...></checkbox>
    </ng-container>
</ng-container>

如果 'number 1' 你确实是指位置索引==1,那么使用:

<ng-container *ngFor="let setting of settings; let i = index; trackBy: trackById">
    (...code...)
    <button...></button>
    <ng-container *ngIf="i == 1">
        <checkbox...></checkbox>
    </ng-container>
</ng-container>

如果你想为位置 2 的元素显示复选框并为所有其他元素显示按钮:

<ng-container *ngIf="i == 2">
    <checkbox...></checkbox>
</ng-container>
<ng-container *ngIf="i != 2">
    <button...></button>
</ng-container>

或者,更短的:

<ng-container *ngIf="i == 2; else showButton">
    <checkbox...></checkbox>
</ng-container>
<ng-container #showButton">
    <button...></button>
</ng-container>

可以使用索引获取当前索引,

<ng-container *ngFor="let setting of settings | trackBy: trackById; let idx = index">
              <button mat-button [matMenuTriggerFor]="menu">Menu</button>
              <mat-menu #menu="matMenu">
                <button mat-menu-item>{{ setting.value.caption }}</button>
                <checkbox *ngIf="idx === 1" />
              </mat-menu>
</ng-container>