Ich verwende Angular 4 mit reaktiven Formen, momentjs und primeng kalender Ich verbinde setValue
und probiere patchValue
auf a reactiveForm-Feld, das ein Date enthält. Dieses Datum wurde über einen Primeng Kalender erstellt.
purchaseDate: Sat Sep 02 2017 00:00:00 GMT+0100 (GMT Daylight Time)
Ich benutze dieses "Datum", um ein paar Dinge zu tun, und dann amSumbit des Formulars wandle ich das Datum mit momentjs
in ein sauberes Format um das Backend zu akzeptieren (zB YYYY.MM.DD) mit .moment().format(....
Aber wenn ich .setValue
starte, bekomme ich den folgenden Konsolenfehler ERROR Missing number at position 0
und kann nicht herausfinden warum.
Ich habe das Problem bis zu dem Punkt verfolgt, an dem ich versuche, den Primeng-Kalenderwert zu setzen / zu patchen - aus irgendeinem Grund möchte ich nicht geändert werden.
UPDATED Monent-Format
Das Problem tritt auf, wenn setValue jetzt den folgenden Fehler anzeigt
Unexpected literal at position 2 at viewWrappedDebugError
Die Sache ist, dass der PrimeNG-Datumswähler erwartet, dass er die Instanz von Date
class als Wert erhält und die Instanz einer Date
-Klasse als Wert zurückgibt. Deshalb sind deine Versuche fehlgeschlagen, Objekte anderer Typen dorthin zu legen.
Es ist nicht klar, warum Sie versuchen, setValue()
im Submit-Handler aufzurufen.
Wenn Sie Wert programmgesteuert ändern möchten, folgen Sie dem Vorschlag von VincenzoC in Kommentaren - ändern Sie das Objekt und transformieren Sie es zurück in Date
object, bevor Sie es an setValue()
übergeben.
Wenn Sie Date
object für das Senden an das Backend formatieren möchten, müssen Sie setValue()
überhaupt nicht aufrufen. Formatieren Sie Date
object in string und übergeben Sie diese Zeichenfolge anstelle von Date
object an die Back-End-API. Wenn Sie das gesamte Objekt value
aus dem Formular senden, können Sie es vor dem Senden folgendermaßen ändern:
Tags und Links javascript angular momentjs primeng angular-reactive-forms