Angular: 如何格式化未插值的日期输入值?
Angular: how to format date input value which is not being interpolated?
我正在为 .ts class 中的日期输入赋值,如下所示:
this.forma.controls.releaseDate.setValue(
this.DatafromApi.propOne["0"].releaseDate
);
从 API 获取的值采用以下格式:"2019092300000000"
我正在尝试应用 Angular 日期管道来格式化它:dd/mm/yyyy
,但由于我没有进行字符串插值,所以我不知道如何应用 |日期。如果我在模板中分配值,我将只使用日期管道,但由于我在 .ts 组件文件中分配值,我只是不知道如何完成它。
这是 .ts 文件:
import { AuthService } from "./../../../../core/consultaService/auth.service";
import { Component, OnInit } from "@angular/core";
import { ReportesService } from "../../../../core/consultaService/reportes.service";
import { UtilService } from "../../../../services/util.service";
import {
FormGroup,
FormBuilder,
Validators,
FormControl
} from "@angular/forms";
@Component({
selector: "app-detalle-nc-descuento-omitido",
templateUrl: "./detalle-nc-descuento-omitido.component.html",
styleUrls: ["./detalle-nc-descuento-omitido.component.scss"]
})
export class DetalleNcDescuentoOmitidoComponent implements OnInit {
forma: FormGroup;
fechaActual = new Date();
user: any;
selectedNote: any;
descripcionArticulos: any;
articulosArray = [];
constructor(
private fb: FormBuilder,
public cargador: NgxSpinnerService,
private reportesService: ReportesService,
private utilService: UtilService,
private authService: AuthService
) {
this.forma = new FormGroup({
releaseDate: new FormControl(),
secondDate: new FormControl(),
});
}
ngOnInit() {
this.forma.controls.releaseDate.setValue(
this.selectedNote.dataUno["0"].releaseDate
);
this.forma.controls.secondDate.setValue(
this.selectedNote.dataUno["0"].releaseDate
);
}
}
这是html:
<div class="row">
<div class="col-sm-6 ">
<label class="col-sm-2 control-label">Second Date</label>
<div class="col-sm-8 pl-0">
<input formControlName="secondDate" name="secondDate" class="form-control" type="text" />
</div>
</div>
<div class="col-sm-6">
<label class="col-sm-2 control-label">Release Date</label>
<div class="col-sm-3 pl-0">
<input formControlName="releaseDate" name="releaseDate" class="form-control" type="text" />
</div>
</div>
</div>
使用 DatePipe 过滤器
import { DatePipe } from '@angular/common';
constructor(private datePipe: DatePipe) {
this.datePipe.transform(your_date, 'dd/mm/yyyy');
}
此外,确保将其添加到提供商列表中
providers: [DatePipe ]
和之前的评论一样,使用DatePipe。举个例子,摘自我当前的项目:
<ng-container matColumnDef="control">
<th mat-header-cell *matHeaderCellDef> Control Date </th>
<td mat-cell *matCellDef="let element"> {{element.control | date:'d MMMM yyyy' }} </td>
</ng-container>
其中 {{element.control }}
包含日期 (1999-12-01) 并且 | date:'d MMM yyyy'
转换为 1999 年 12 月 1 日。
希望能帮到你
您可以在 component.ts 文件中使用 angular 内置日期管道,如下所示,首先您应该将日期管道添加到模块提供程序数组中。这样您就可以稍后在 component.ts 中注入 DatePipe。
providers: [DatePipe]
在您的 component.ts 中执行以下操作。
import { DatePipe } from '@angular/common'
在组件构造函数中注入日期管道
constructor(private datePipe: DatePipe) {}
在您的 ngOnInit
设置输入字段的值之前,使用 DatePipe.transform
方法
转换数据
ngOnInit() {
const releaseDate = this.datePipe.transform(this.selectedNote.dataUno["0"].releaseDate, 'dd/mm/yyyy');
const secondDate= this.datePipe.transform(this.selectedNote.dataUno["0"].releaseDate, 'dd/mm/yyyy');
this.forma.controls.releaseDate.setValue(releaseDate);
this.forma.controls.secondDate.setValue(secondDate);
}
我正在为 .ts class 中的日期输入赋值,如下所示:
this.forma.controls.releaseDate.setValue(
this.DatafromApi.propOne["0"].releaseDate
);
从 API 获取的值采用以下格式:"2019092300000000"
我正在尝试应用 Angular 日期管道来格式化它:dd/mm/yyyy
,但由于我没有进行字符串插值,所以我不知道如何应用 |日期。如果我在模板中分配值,我将只使用日期管道,但由于我在 .ts 组件文件中分配值,我只是不知道如何完成它。
这是 .ts 文件:
import { AuthService } from "./../../../../core/consultaService/auth.service";
import { Component, OnInit } from "@angular/core";
import { ReportesService } from "../../../../core/consultaService/reportes.service";
import { UtilService } from "../../../../services/util.service";
import {
FormGroup,
FormBuilder,
Validators,
FormControl
} from "@angular/forms";
@Component({
selector: "app-detalle-nc-descuento-omitido",
templateUrl: "./detalle-nc-descuento-omitido.component.html",
styleUrls: ["./detalle-nc-descuento-omitido.component.scss"]
})
export class DetalleNcDescuentoOmitidoComponent implements OnInit {
forma: FormGroup;
fechaActual = new Date();
user: any;
selectedNote: any;
descripcionArticulos: any;
articulosArray = [];
constructor(
private fb: FormBuilder,
public cargador: NgxSpinnerService,
private reportesService: ReportesService,
private utilService: UtilService,
private authService: AuthService
) {
this.forma = new FormGroup({
releaseDate: new FormControl(),
secondDate: new FormControl(),
});
}
ngOnInit() {
this.forma.controls.releaseDate.setValue(
this.selectedNote.dataUno["0"].releaseDate
);
this.forma.controls.secondDate.setValue(
this.selectedNote.dataUno["0"].releaseDate
);
}
}
这是html:
<div class="row">
<div class="col-sm-6 ">
<label class="col-sm-2 control-label">Second Date</label>
<div class="col-sm-8 pl-0">
<input formControlName="secondDate" name="secondDate" class="form-control" type="text" />
</div>
</div>
<div class="col-sm-6">
<label class="col-sm-2 control-label">Release Date</label>
<div class="col-sm-3 pl-0">
<input formControlName="releaseDate" name="releaseDate" class="form-control" type="text" />
</div>
</div>
</div>
使用 DatePipe 过滤器
import { DatePipe } from '@angular/common';
constructor(private datePipe: DatePipe) {
this.datePipe.transform(your_date, 'dd/mm/yyyy');
}
此外,确保将其添加到提供商列表中
providers: [DatePipe ]
和之前的评论一样,使用DatePipe。举个例子,摘自我当前的项目:
<ng-container matColumnDef="control">
<th mat-header-cell *matHeaderCellDef> Control Date </th>
<td mat-cell *matCellDef="let element"> {{element.control | date:'d MMMM yyyy' }} </td>
</ng-container>
其中 {{element.control }}
包含日期 (1999-12-01) 并且 | date:'d MMM yyyy'
转换为 1999 年 12 月 1 日。
希望能帮到你
您可以在 component.ts 文件中使用 angular 内置日期管道,如下所示,首先您应该将日期管道添加到模块提供程序数组中。这样您就可以稍后在 component.ts 中注入 DatePipe。
providers: [DatePipe]
在您的 component.ts 中执行以下操作。
import { DatePipe } from '@angular/common'
在组件构造函数中注入日期管道
constructor(private datePipe: DatePipe) {}
在您的 ngOnInit
设置输入字段的值之前,使用 DatePipe.transform
方法
ngOnInit() {
const releaseDate = this.datePipe.transform(this.selectedNote.dataUno["0"].releaseDate, 'dd/mm/yyyy');
const secondDate= this.datePipe.transform(this.selectedNote.dataUno["0"].releaseDate, 'dd/mm/yyyy');
this.forma.controls.releaseDate.setValue(releaseDate);
this.forma.controls.secondDate.setValue(secondDate);
}