Winkel 2 date Rohr innerhalb einer Control-Eingang
Ich habe eine dynamisch generierte Winkel 2 FormGroup mit mehreren Control-input-Felder. Einige der Eingaben sind Daten, die vom server abgerufenen als unix-Zeitstempel.
Was ich tun möchte ist :
- übersetzen zu können den unix-timestamp in eine lesbare form,
wenn meine FormGroup gefüllt, und auch - übersetzen der menschlichen
Darstellung des Datums in eine unix-timestamp, wenn das Formular
eingereicht.
Teil 1 ist etwas einfacher, mit Eckigen Datum pipe wie diese :
<input class="form-control" [formControlName]="question.key"
[value]="this.form.controls[this.question.key].value | date:'dd/MM/yyyy'">
Wo diese.form ist ein Verweis auf die FormGroup und diese.Frage ist ein benutzerdefiniertes wrapper-Klasse basiert auf der offiziellen tutorial über dynamische Formulare :
https://angular.io/docs/ts/latest/cookbook/dynamic-form.html
Versucht das Datum zu ändern-Eingang, der Weg wird nicht funktionieren, weil das Rohr wird ständig versuchen, Sie zu transformieren, input-Wert, wodurch die Eingabe unbrauchbar, wenn nicht, werfen ein Ungültiges argument für Rohr 'DatePipe' Ausnahme.
Klären, fülle ich mein Formular mit den FormGroup.patchValue()
api, und senden das Formular die Daten mit der FormGroup.getRawValue()
api.
Habe ich versucht, eine Eckige 2 date picker Komponente, aber Sie machten meine riesige Formen ziemlich langsam, so möchte ich es tun, ohne benutzerdefinierten Datums-Picker oder jede jQuery-abhängige widgets.
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Weg, um so etwas zu tun wäre, um eine Komponente zu erstellen für Ihre Eingabe implementiert
ControlValueAccessor
So etwas tun sollten, die trick (nicht getestet):
dann sollten Sie in der Lage sein, es zu benutzen wie diese:
oder
@Component
Erklärung. Ich werde so schnell wie möglich Bearbeiten.touchCallback : any = () => {};
Andere als das, und nach einer viel zu Lesen, ich glaube, ich verstehe, wie es funktioniert jetzt! Akzeptieren Sie Ihre Antwort kurz, wenn ich keine anderen Fragen.Danke!