【问题标题】:ngClass boolean expression gets a template parsing errorngClass 布尔表达式获取模板解析错误
【发布时间】:2019-01-09 08:53:34
【问题描述】:

我想检查 时刻 日期是否是当天。这不起作用,我不确定为什么会出现此错误。我认为是 Angular 造成的错误。

<div class="timeline-date"
      *ngFor="let date of dates"
      [ngClass]="{'current-date': date.isSame(new Date(), 'day') }">
  {{date.format("MMM Do")}}
</div>

错误:

未捕获的错误:模板解析错误:解析器错误:缺少预期 ) 在 [{'current-date': date.isSame(new Date(), 'day') }] 中的第 34 列

【问题讨论】:

  • 它应该是 [ngClass]="{'current-date' ? date.isSame(new Date(): 'day') }">
  • @ThanveerShah 这不是 ngClass 的有效语法。
  • @ThanveerShah 是的,但你为什么在这里谈论三元?这与三元无关。
  • 我认为问题出在new Date() afaik 你不能在模板中调用new。你能尝试让isSame()在组件中返回boolean的方法并将变量传递给它吗?或者,您可以定义一个类似newDate = new Date() 的属性并在date.isSame() 中使用它,也许。
  • 对我来说,问题在于new Date()。最好的选择是地图日期。添加新属性 isSame 将保存方法的结果并在模板中使用它,如[ngClass]="{'current-date': date.isSame}"

标签: angular typescript momentjs angular7


【解决方案1】:

这可能是isSame 方法的原因。 声明一个布尔变量,这将是这个方法的结果:

isSame: boolean;
// ...
isDateSame = date.isSame(new Date(), 'day');

并使用ngClass 中的布尔值:

<div class="timeline-date"
    *ngFor="let date of dates"
    [ngClass]="current-date: isSame">
  {{date.format("MMM Do")}}
</div>

编辑:如何正确使用 moment.js 和 angular:

  1. npm安装它

    npm install --save moment

  2. 将其导入.ts 文件中:

    import * as moment from 'moment';

  3. 像这样使用它:

    let myMoment: moment.Moment = moment("someDate");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多