我有这个

<div
    *ngFor="let dt of totals"
    [ngClass]="{ up: dt.isUp }"
>
    <span> {{ dt }}</span>
</div>

我想重构成angular v17语法

@for (dt of totals; track $index) {
    <span>{{ dt }}</span>
}

我如何重构<div>上的[ngClass]

我试过了,但显然不起作用,因为<div>中还没有定义变量dt

<div [ngClass]="{ up: dt.isUp }">
    @for (dt of totals; track $index) {
        <span>{{ dt }}</span>
    }
</div>

我可以试试这个,但我不想在每个元素上多加ng-container分:

<div>
    @for (dt of totals; track $index) {
        <ng-container [ngClass]="{ up: dt.isUp }">
            <span>{{ dt }}</span>
        </ng-container>
    }
 </div>

官方的做法是什么?

编辑: 谢谢你的帮助,我得到了我需要的解决方案.这个问题很愚蠢,因为我忘记了*ngFor重复了它所在的元素及其子元素.我忘了这一点,以为它只是在重复它的子元素.这是基本的前v17版本的Angular .我把这个问题留下来,以防这个问题会传染到其他人.

推荐答案

在您的示例中,您将使用*ngFor创建多个div,因此相同的类似功能将是下面的代码.

你放置*ngFor的行会被重复.

@for (dt of totals; track $index) {
    <div [ngClass]="{ up: dt.isUp }" >
        <span> {{ dt }}</span>
    </div>
}

如果你不想要div的标签,那么你可以把[ngClass]加到span上,必须把ngClass附加到一个HTML元素上.因为类是以html的形式出现的,所以我们不能使用ng-container,因为在呈现期间,在html中没有任何标记!

@for (dt of totals; track $index) {
    <span [ngClass]="{ up: dt.isUp }"> {{ dt }}</span>
}

Angular相关问答推荐

Angular 升级到v16和Ant设计错误:';nzComponentParams';类型';ModalOptions';中不存在

未在ng bootstrap 模式中设置表单输入

在Drective Composure API中使用指令输出

Angular 如何观察DOM元素属性的变化?

Angular *ngIf 表达式中这么多冒号的作用是什么?

使用forkJoin和mergeMap的正确方式是什么?

NgRx Effects 抛出类型错误,我不知道发生了什么

ng 生成组件不会创建 ngOnInit 和构造函数

如何使用 Angular 12 material 验证密码和确认密码?

在ionic 5中获取url传递的参数

关闭 Dynamsoft Web Twain 弹出窗口

怎样在 Angular 2 或 4 中将输入字段设为只读?

如何使用ngrx和effects 订阅成功回调

EmptyError: no elements in sequence

在同一个组件中使用 MatSort 的多个 mat-table

Angular 2 - 组件内的 formControlName

如何导航到同级路由?

RxJS - 发生错误时观察到的不会完成

Hot and Cold observables:有 hot和 cold运算符吗?

@viewChild 不工作 - 无法读取未定义的属性 nativeElement