使用 *ngIf 处理正在打印以在 Angular 2 应用程序中查看的活动标志和非活动标志

Using *ngIf to Handle Active vs Inactive Flags Being Printed to View in Angular 2 App

在我的 Angular 2 应用程序的模板中,我正在处理向屏幕打印标志。因为这是 Angular 2(不是 Angular 4)——而且我们还没有准备好移动到 Angular 4,所以我无法定义 "else" 块,所以我必须找到一种不同的方法来完成使用 "else" 块的简单方法。

现在我正在将标志打印到此 table 数据的列中,如果有标志 "completed === false" -- 意味着它们是活动的。

我 运行 遇到的挑战是如何处理没有标志或有但 属性 "completed" 的情况设置为 "true"——所以在这种情况下它们不再是活动标志。

基本上我想使用 *ngFor 和 *ngIf 在有标志的情况下将标志打印到列,并且 "completed" 属性 设置为 "false" 这些标志。如果没有标志,或者找到的所有标志都将 "completed" 属性 设置为 "true",我只想将 "Clear" 打印到屏幕上。这是我目前所拥有的:

   <ng-container *ngFor="let service of record.services"> 

        <ng-template *ngIf="service?.service === 'consulting services' && service?.flags">
            <ng-template *ngFor="let flag of service.flags">
                <span *ngIf="flag?.completed === false" class="standard-flag" 
                    [class.hold-flag]="flag?.flagType === 'hold'">Flag
                </span>
            </ng-template>
            <ng-template *ngFor="let flag of service.flags">
                <span *ngIf="flag?.completed === true" class="green-flag">Clear
                </span>
            </ng-template>
        </ng-template>

    </ng-container>

目前正在生成的是两种标志都被打印到屏幕上(其中 "completed" 是 "false" 或 "true")。我想做的是说类似的话——如果没有标志,或者有标志,但所有标志都 "completed === true",那么只在屏幕上打印 "Clear"。

这样一来,列中总会有一些内容 - "Flag" 或 "Clear" - 但绝不能同时出现在同一列中。希望这很清楚。

我可以在视图中使用哪种语法结构来实现这一点?

您可能想看看 ngSwitch

这就像一个刚刚在模板中处理的 switch 语句。您可能必须创建另一个变量来控制 switch 语句。希望您可以处理该逻辑,因为我只是传递您可能正在寻找的语法结构。