Angular 在*ngFor中执行索引减法

Angular 在*ngFor中执行索引减法,angular,Angular,如何使用索引进行计算?我想在条件为真时应用类危险,但我需要在*ngFor循环内计算I-1 <tr *ngFor="#org of data; #i = index"> <td [ngClass]="{danger: org.price < data.stock[i-1].val }"> </tr> 我很确定这不是由I-1不工作引起的。 索引以0开头。因此,我想问题在于data.stock[-1]是无效的,因为访问数组的索引-1是无效的。您可以在

如何使用索引进行计算?我想在条件为真时应用类危险,但我需要在*ngFor循环内计算I-1

<tr *ngFor="#org of data; #i = index">
    <td [ngClass]="{danger: org.price < data.stock[i-1].val }">
</tr>

我很确定这不是由
I-1
不工作引起的。

索引以
0
开头。因此,我想问题在于
data.stock[-1]
是无效的,因为访问数组的索引
-1
是无效的。

您可以在自定义函数中进行任何需要的计算,例如:

@Component({
  selector: 'my-app',
  template: `<table>
               <tr *ngFor="let org of data; let i = index">
                 <td [ngClass]="{danger: org.price < org.stock[getIndex(i)].val }">
               ...
})
export class AppComponent implements OnInits {
    ...
    // this is your custom function to set index as you need
    getIndex(index){
        var result = index - 1;
        if (result < 0 || result > 0) result = 0;
        return result;
    }
}
@组件({
选择器:“我的应用程序”,
模板:`
...
})
导出类AppComponent实现OnInits{
...
//这是自定义函数,用于根据需要设置索引
getIndex(索引){
var结果=指数-1;
如果(结果<0 | |结果>0)结果=0;
返回结果;
}
}
请看我的快速示例

注:

  • 正如@Günter所指出的:负指数是无效的
  • 您的
    数据
    属性是一个对象数组还是一个对象?似乎它应该是一个对象数组,其中每个对象都有一个名为
    stock
    的附加数组属性
  • *ngFor
    中的
    #
    组织已被弃用,您应该改用

您问题中的代码有什么问题?无法读取以下数据中未定义的属性val。stock[i-1].val。如果我使用一个静态数字,它可以正常工作。你是对的,问题是数组的索引无效。顺便说一下,NG1让我这样做没有错误(!)我不太了解NG1。也许它的索引以
1
开头。