【问题标题】:Angular pipe for returning BMI more than 30返回BMI大于30的角管
【发布时间】:2019-03-30 20:03:19
【问题描述】:

我希望有一个管道来返回数组中大于 30 的项目数。JSON 数组如下所示:

bmis = [
    {
        "bmi": 34.32
    },
    {
        "bmi": 23.75
    },
    {
        "bmi": 19.06
    },
    {
        "bmi": 18.69
    },
    {
        "bmi": 45.40
    },
    {
        "bmi": 37.64
    },
    {
        "bmi": 35.54
    }
]

请注意,这些 bmi 值是用于测试结果的虚假值。

那么我的 bmi 管道如下所示:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
    name: 'bmi'
})
export class BmiPipe implements PipeTransform {
    transform(items: any[], attr: string): any {
        let counter = 0;
        for (let i = 0; i < items.length; i++) {
            if (items[i] >= 30.0) {
                counter++;
            }
        }
        return counter;
    }
}

最后,我的模板如下所示:{{ bmis | bmi }}

为了节省空间,我没有包含组件代码。此外,管道在 app.module 文件中注册。 此管道不返回 4,这是正确的结果。实际上。它什么也不返回。

我不确定管道代码的正确性。但我就是看不到缺失的部分。任何帮助将不胜感激!

【问题讨论】:

  • 项目本身不大于 30,它们的属性可能是......

标签: angular typescript angular-pipe


【解决方案1】:

您的代码将bmis 数组视为其值是数字,但它们实际上是对象。 所以,改变这个:

if (items[i] >= 30.0) {
    counter++;
}

收件人:

if (items[i].bmi >= 30.0) {
    counter++;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多