web-dev-qa-db-fra.com

Comment puis-je définir une date vide valide en instant JS?

Donc, j'utilise un Angular = DatePicker du matériel qui m'aide uniquement à sélectionner un mois et un an. https://material.angular.io/components/datepicker/overview#watching -Le-vues - pour les changements-les-changements-yound-and-mois

Cependant, la fonctionnalité ne fonctionne pas bien comme prévu à moins que vous fassiez quelque chose comme ça - date = nouveau formulaire (moment (moment)); (Vous êtes autorisé à choisir la journée aussi bien, à part le mois et l'année.)

Maintenant, le moment () Comme nous le savons, retourne la date et l'heure actuelles. Mon objectif principal est d'afficher les détails de l'utilisateur existants sous un formulaire pour une application. Cependant, l'utilisateur peut éditer le formulaire après sa charge. Un de ces champs est un matériau salepicker. Maintenant, ce n'est pas un champ obligatoire, je ne reçois donc pas toujours une réponse valide du backend. Lorsque la réponse est une date, il n'y a absolument aucun problème. Mais chaque fois que je reçois une valeur nulle, c'est là que se pose le principal problème.

J'ai regardé le moment.js Docs (- https://momentjs.com/docs/ ) et indique clairement que le moment (NULL) et le moment ("") sont à la fois des dates non valides. Et donc une fois que j'utilise l'un des deux pour initialiser le DatePicker, la datePicker ne me permet pas de sélectionner une date au mode modifiable.

Comment puis-je définir une date valide et vide en utilisant le moment () qui n'interférera pas avec la fonctionnalité de DatePicker?

8

Nous avons eu le même problème dans notre projet et nous l'avons résolu en ajoutant une condition ternaire pour la valeur du sélecteur de date. const dateValue = value ? moment(value) : null; Si la valeur existe, nous créons un objet d'un moment, sinon il devrait être null.

2
MKrup

Si vous utilisez l'adaptateur moment adaptateur et dates de moment, vous devez définir la variable de date de votre composant sur null et non moment(null). En interne, la datePicker demandera à l'adaptateur si la date est valide mais moment(null).isValid() renvoie false déclenchant ainsi le validateur d'analyse qui retournera une erreur.

2
Fabian Vilers