* ngIf中的运算符比较

时间:2018-07-20 09:41:04

标签: angular

我想比较ngIf中的数字,并根据结果显示一些内容。

  <div>
      <div *ngIf="number(user.number)>59">
     {{  number(user.number) }}
      </div>
      <div *ngIf="number(user.number)<60">
        {{  number(user.number) }}
        </div>
    </div>

我的号码。ts

 number ( date: Date) {
    const now = new Date().getFullYear()
    const diff = Math.abs(now - new Date(date).getFullYear())
    console.log(diff)
    return diff 
}

它将返回一个数字

这不起作用,我认为“>”&“ <”运算符有问题,有没有办法使其起作用?

2 个答案:

答案 0 :(得分:0)

*ngIf的内部(""之间的值)必须最终可评估为真/假值。问题可能出在您的number()实现中,><的用法非常好。

请提供您的函数实现和更广泛的上下文,即user.number的来源

-编辑-
OP发布TS代码后,日期格式就会出现问题。那个部分:  如果new Date(date).getFullYear()的值不正确,则计算结果为1970,那么结果将始终为48,该值小于两个比较的值。您需要在创建日期时验证您的输入。

尝试在浏览器控制台中创建以下任何一项:

new Date(99)
new Date(2000)
new Date(20)

它们的所有取值为Thu Jan 01 1970 01:00:00 GMT+0100。 用伪参数补充Date构造函数:

new Date(99, 0)
new Date(2000, 0)
new Date(20, 0)

获取有效日期。但这只是一个假设,因为您没有提供user.number的格式,我只是假设这是输入文本值,范围是0到无穷大。

答案 1 :(得分:0)

您可以尝试使用moment

安装时刻--npm install moment --save

  

app.component.html

<div>
    <div *ngIf="number(user.number)>59">
        {{ number(user.number) }}
    </div>
    <div *ngIf="number(user.number)<60">
        {{ number(user.number) }}
    </div>
</div>
  

app.component.ts

import moment from 'moment';

number(date: Date) {
    const diff =Math.abs(moment().diff(moment(date),'year'))
    console.log(diff);
    return diff;
}