在angular4中使用ngFor时如何根据值选择HTML?

How to choose HTML according to the value while using ngFor in angular4?

我是 angular 的新手,假设我有一个像这样的值数组

domElement:Array<boolean>=[true,false,false,false,false,true,true,true];

我想要不同的 html 用于真值,不同的 html 用于假值,同时使用 ngFor,我遵循了这个 并实现了这个但是它不起作用

     <div *ngFor="let n of domElement; let i=index">   

<div *ngFor="let n of num; let i=index">

    <ng-template *ngIf="n; then gotValue else noValue"></ng-template>

    <ng-template #noValue>
        <div class="alert alert-warning">
            no value found - dummy element for no record !!!
        </div>
    </ng-template>
    <ng-template #gotValue>
        <div class="alert alert-success">
            got values !!!
        </div>
    </ng-template>
</div>

这是您要找的吗?

<div *ngFor="let n of num">
    <template1 *ngIf="n%2 === 0"></template1>
    <template2 *ngIf="n%2 !== 0"></template2>
</div>

我猜你定义了两个同名的不同块,你的代码中没有#gotValue 块试试这个:

<div *ngFor="let n of domElement">
    <ng-template *ngIf="n; then noValue else gotValue"></ng-template>
    <ng-template #noValue>
        <div class="alert alert-warning">
            no value found - dummy element for no record !!!
        </div>
    </ng-template>
    <ng-template #gotValue>
        <div class="alert alert-success">
            got values !!!
        </div>
    </ng-template>
</div>
  1. 如果你只想为两个特定的案例场景使用不同的代码,那么你必须使用。 *ngIf/else 不是 *ngIf/then/else

<div *ngFor="let n of num"> <template1 *ngIf="n%2 === 0; else other_content"></template1> <template2 #other_content></template2> </div>

  1. 如果你的代码没有改变,唯一改变的是样式,那么最好使用一个通用组件,通过 ng class 指令

<some-element [ngClass]="{'first': true, 'second': true, 'third': false}">...</some-element>

<div *ngFor="let n of num; let i=index">
<div *ngIf="n%2===0;else gotValue"></div>
    <div class="alert alert-warning">
        no value found - dummy element for no record !!!
    </div>
<ng-template #gotValue>
    <div class="alert alert-success">
        got values !!!
    </div>
</ng-template>

您不需要 noValue ng 模板。这对我有用。希望对你有帮助。