我想比较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
}
它将返回一个数字
这不起作用,我认为“>”&“ <”运算符有问题,有没有办法使其起作用?
答案 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;
}