我使用的是角度7,我想知道如何比较两个strings
。在这种情况下,我的每个strings
都模拟一个date
,比如说“ 2019-12-26”和“ 2018-12-26”。
在Javascript
中,比较它们非常简单,因为我只需要使用运算符:
console.log(today > "2018-12-06");
这是有效的,我以为它会起作用。它基本上返回true
。不过,我正在尝试从HTML文件中完全做到这一点
<div *ngIf="today > example.endDate">
是today
和'example.endDate'两个strings
,它们包含与我在strings
示例中使用的完全相同的Javascript
,但其中没有显示任何一个
还有其他方法可以进行比较吗?
关于, 马里奥
更新 我再看了一下问题,似乎比较不是问题,但是获取变量的方法是问题。
我在ngOnInit()
中得到了一个变量。
ngOnInit() {
this.getCurrentDate();
}
//Get current date
getCurrentDate() {
let aux = new Date();
//2 characteres
let dd = String(aux.getDate()).padStart(2, "0");
let mm = String(aux.getMonth() + 1).padStart(2, "0"); //January is 0!
let yyyy = aux.getFullYear();
let today = yyyy + "-" + mm + "-" + dd;
let other = "2019-01-31";
}
问题是我直接在我先前显示的HTML
中使用了此变量。我得到的错误如下:
错误错误:ExpressionChangedAfterItHasBeenCheckedError:表达 检查后已更改。先前的值:'ngIf:undefined'。 当前值:“ ngIf:true”。
所以问题是我在获取HTML
之前在value
文件中使用了一个变量。或者至少是我所了解的
要检查此错误,我创建了一个Stackblitz
表示形式。在上面,我创建了两个示例:
ngOnInit()
ngOnInit()
中的变量https://stackblitz.com/edit/angular-jjgsmq?file=src%2Fapp%2Fhello.component.ts
答案 0 :(得分:2)
最简单的解决方案是 您确定ngOnInit是适合您的LifeCycle挂钩吗? 如果组件“很重”以呈现其他明智的ngAfterViewInit(),我会尝试ngAfterContentInit()
<div *ngIf="IsTodayBigger()">
ngOnInit() {
this.getCurrentDate();
}
IsTodayBigger(): boolean {
today=this.getCurrentDate()
exampleEndDate= example.endDate;//use binding or ViewChild if needed
return today&&exampleEndDate&& today> example.endDate
}
//Get current date
getCurrentDate() {
let aux = new Date();
//2 characteres
let dd = String(aux.getDate()).padStart(2, "0");
let mm = String(aux.getMonth() + 1).padStart(2, "0"); //January is 0!
let yyyy = aux.getFullYear();
today = yyyy + "-" + mm + "-" + dd;
let other = "2019-01-31";
}