0

有人可以指导我使用 formControlName 在 Angular 8 中实现日期管道吗

train.component.html

<mat-grid-tile colspan=1 rowspan=1>
    <div class="train-control">
        <input type="text" formControlName="{{ 'apprTimestamp' | date:'medium' }}">
    </div>
</mat-grid-tile>

但似乎没有工作。有人可以指导我。

例外

TrainComponent.html:58 ERROR Error: InvalidPipeArgument: 'Unable to convert "apprTimestamp" into a date' for pipe 'DatePipe'
    at invalidPipeArgumentError (common.js:5737)
    at DatePipe.transform (common.js:6877)
    at checkAndUpdatePureExpressionInline (core.js:34381)
    at checkAndUpdateNodeInline (core.js:35155)
    at checkAndUpdateNode (core.js:35090)
    at debugCheckAndUpdateNode (core.js:36112)
    at debugCheckDirectivesFn (core.js:36055)
    at Object.eval [as updateDirectives] (TrainComponent.html:60)
    at Object.debugUpdateDirectives [as updateDirectives] (core.js:36043)
    at checkAndUpdateView (core.js:35055)

谢谢 !

4

2 回答 2

3

您也可以在组件中使用日期管道,并从那里修改日期。这只会工作一次,预设日期。但是您的问题中也没有包含任何其他内容,因此我们可以完全省略它。

所以我建议如下:

import { DatePipe } from '@angular/common';

@Component({
  selector: '...',
  templateUrl: '...',
  styleUrls: ['...'],
  providers: [DatePipe]
})

将其注入构造函数中,然后使用::

constructor(private fb: FormBuilder, private datePipe: DatePipe) {
  this.myForm = this.fb.group({
    field1: [this.datePipe.transform(new Date(), 'medium')]
  })
}

然后从模板中移除管道。

堆栈闪电战

于 2019-09-19T10:18:53.967 回答
-1

如果您确实想将日期值分配给 formControlName,请使用包含时间戳值的变量排除 ''。

<input type="text" name="someName" formControlName="{{ apprTimestamp | date:'medium' }}">
于 2019-09-18T21:16:14.537 回答