【问题标题】:Handling Date Transformation in Component in Angular 2 App在Angular 2 App中处理组件中的日期转换
【发布时间】:2017-11-09 23:43:45
【问题描述】:

我正在尝试改变某些日期在我的 Angular 2 应用程序中的显示方式。就我而言,在视图中使用日期管道和字符串插值不是一个选项,因为我的模板代码如下所示:

<input class="app-input"
    [(ngModel)]="staff.profile.hireDate" placeholder="None"
    [field-status]="getPropertyStatus('profile.hireDate')"/>

一位评论者建议我在将其传递给视图之前尝试处理组件中日期的转换。这是他写的:

您可以在您的组件中执行此操作。

从“@angular/common”导入 { DatePipe };然后将其添加到 组件或 ngModule 中的 providers 数组。

在你的组件中,你在你的构造函数中注入这个:

constructor(private myDatePipe: DatePipe) {} 并修改您的变量 属性:

this.staff.profile.hireDate = this.myDatePipe.transform(new Date(this.staff.profile.hireDate));

这听起来像是完美的解决方案。但是,我仍然不清楚确切的实施。我已经导入了DatePipe 并在构造函数中定义了一个本地实例。但是接下来的部分会去哪里:

this.staff.profile.hireDate = this.myDatePipe.transform(new Date(this.staff.profile.hireDate));

我尝试将它放在构造函数的主体中,但没有成功。

所以我仍然有点不清楚这是哪里,以及之后是否还需要更改视图中的代码。

任何澄清将不胜感激。

【问题讨论】:

    标签: javascript angular date typescript date-pipe


    【解决方案1】:

    以这种方式使用 DatePipe

    NgModule({
      providers: [DatePipe]
    })
    

    在你的组件内部:

    import { DatePipe } from '@angular/common';
    ...
    constructor(private datePipe: DatePipe) {}
    ...
    this.staff.profile.hireDate= this.datePipe.transform(this.staff.profile.hireDate, 'dd-MM-yy');
    

    【讨论】:

    • 然后我会在实际模板中放入什么?正如你所拥有的那样,你会得到一个错误。您的意思是将“this.myDate”放在构造函数的主体中吗?
    • 你仍然有 this.staff.profile.hireDate 坐在构造函数的主体之外。这将导致错误。
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多