添加ngIf条件以显示和隐藏div

时间:2018-07-18 08:16:16

标签: angular

如果要存在于数组中,我要根据值隐藏和显示一个div。

此刻,我正在显示所有数据,但不知道如何格式化ngIf,因此我可以过滤数组中的值。

我要检查information.date是否在filtreArrayDate中,如果要显示,除非隐藏

<div *ngIf="user.recipient === selectedUser._id && showInformation(information)">
  //<div *ngIf="filtreArrayDate.includes(information.date)"> // throw error in includes
  <div class="information-date">{{ information.date | date:'EEEE'}} {{information.date | date:'d'}}  {{ information.date | date:'MMMM'}} {{ information.date |
    date:'yyyy'}}
  //</div>
 </div>

这是我的ts文件,它将获取所有信息,并将进行过滤并获得过滤后的数组。我想使用此过滤数组来显示/隐藏我的div

initInformations() {
    if (this.informationSubscribe) {
      this.informationSubscribe.unsubscribe()
    }
    this.InformationSubscribe = this.informationProvider.getInformations(this.selectedUser._id).subscribe(
      ({ data }) => {
        this.informations = data['getInformationsByUser']
        const test = this.informations.map(a => a.date);
        const set = new Set()
        const filtreArrayDate = test.filter((a) => {
          const d = new Date(a).setHours(0, 0, 0)
          if (set.has(d)) {
            return false
          }
          set.add(d);
          return true;
        })
        if (this.informations.length === 10 && !this.enableInfiniteScroll) {
          this.enableInfiniteScroll = true
        }
      },
      (error) => {
        console.warn(`getInformations failed: ${JSON.stringify(error)}`)
      })
  }

1 个答案:

答案 0 :(得分:0)

正如您所提到的,您正在使用filtreArrayDate.includes进行检查,并在此处消除错误。 尝试使用 filtreArrayDate?.includes ,看看它是否可以解决您的问题。