【发布时间】:2019-08-07 09:00:35
【问题描述】:
我正在使用 Angular 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 包含与我在Javascript 示例中使用的完全相同的strings,但它没有显示它们中的任何一个。
还有其他方法可以进行这种比较吗?
问候, 马里奥
更新 我再次查看了这个问题,似乎比较不是问题,但获取变量的方式是。
我在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:未定义'。 当前值:'ngIf: true'。
所以问题是我在获取value 之前在HTML 文件中使用了一个变量。或者至少我是这么理解的
为了检查这个错误,我创建了一个Stackblitz 表示。在它上面,我创建了两个例子:
- 变量不在
ngOnInit() -
ngOnInit()中的变量
https://stackblitz.com/edit/angular-jjgsmq?file=src%2Fapp%2Fhello.component.ts
【问题讨论】:
-
它似乎工作正常stackblitz.com/edit/…。分享你的演示代码
-
是的,我已经尝试过了,它确实有效。看来我的问题是我使用了一个在初始化时得到的变量。我将尝试更好地解释它更新问题。如果您能看一下,我将不胜感激:)
-
好像另一个用let声明为局部变量,不是组件变量
-
我认为解决方案是在获取值后渲染视图,但我不知道该怎么做
-
来自@ShashankVivek stackblitz,即使我稍后更改其他日期,它似乎也能正常工作。 stackblitz.com/edit/angular-sk9atk你能在stackblitz上重现你的问题吗