比较HTML文件中的2个字符串-Angular

时间:2019-03-16 12:38:36

标签: html angular date

我使用的是角度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表示形式。在上面,我创建了两个示例:

  1. 变量不在ngOnInit()
  2. ngOnInit()中的变量

https://stackblitz.com/edit/angular-jjgsmq?file=src%2Fapp%2Fhello.component.ts

1 个答案:

答案 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";
  }