3
votes

Valeur définie de ngbDatepicker

Dans mon application Angular, un formulaire basé sur un modèle, j'ai un champ de date de naissance et j'ai ajouté ngbDatepicker pour ce champ comme indiqué.

JSON.stringify({ "year": "2019", "month": "2", "day": "26" }, (key, value) => !isNaN(+value) ? +value : value);

Je reçois le back-end du formulaire de date de naissance API en tant que dob: "2019-02-16 00:00:00" et je souhaite transmettre cette valeur comme ci-dessous,

toDate(dob) {
 const [year, month, day] = dob.split('-');
 const obj = { year: year, month: month, day: day.split(' ')[0].trim() };
 console.log('convert date', obj);
 this.model.dob = obj;
 //  this.model.dob ={year: 2017, month: 5, day: 13};
}

car ngbDatepicker obtenir de la valeur dans ce format. C'est ce que j'ai essayé de convertir ma date de naissance.

 { 
  "year": 2019, 
  "month": 2, 
  "day": 26 
 }

Le résultat est {year: "2019", month: "02", day: "16"} , je veux supprimer la citation marques de cette sortie. J'ai essayé tant de méthodes et je n'ai pas pu obtenir la sortie nécessaire. Je pourrais obtenir {"year": 2019, "month": 02, "day": 16} cette sortie en utilisant le code ci-dessous.

<input #dob="ngbDatepicker"
                 (click)="dob.toggle()"
                 [(ngModel)]="model.dob"
                 [ngClass]="{ 'is-invalid': f.submitted &&  dob.invalid }"
                 class="form-control"
                 id="dob"
                 name="dob"
                 required
                 type="text"
                 [disabled]="isDisabled"
                 [class.ash]="isDisabled"
                 [class.highlight]="!isDisabled"
                 ngbDatepicker
          />

Mais pour définir la date, je dois définir un objet comme celui-ci. {année: 2019, mois: 2, jour: 26}


0 commentaires

5 Réponses :


1
votes

Je pourrais résoudre mon problème en utilisant 'parseInt'.Utilisez ceci link pour en savoir plus sur parseInt. J'ai changé mon code comme indiqué ci-dessous.

toDate(dob) {
if (dob) {
  const [year, month, day] = dob.split('-');
  const obj = { year: parseInt(year), month: parseInt(month), day: 
    parseInt(day.split(' ')[0].trim()) };
  this.model.dob = obj;
  }
}


0 commentaires

0
votes
<ngb-datepicker #d [startDate]="{year: 1789, month: 7}"></ngb-datepicker>
You can write like this .[startDate]="{year: From API dob.getYear(), month: From API dob.getMonth()}"

1 commentaires

Je n'ai pas pu utiliser cette solution pour quelques raisons. quand je reçois le jour de l'API, il est livré avec un espace et 00:00:00. Et de la même manière, j'ai également besoin du champ de saisie.



6
votes

J'ai résolu mon problème en faisant cela.

Créer une instance de NgbDate en,

date = new NgbDate(2020,19,02);

faire de cette date comme ngModel;


1 commentaires

Oui, ça marche bien, retourne un objet avec chaque partie de la date.



0
votes

Vous pouvez obtenir votre entrée NgbDatePicker pour lire / écrire des dates Javascript de / à [(ngModel)] = "model.dob" dans Angular 9 en ajoutant l'instruction d'importation suivante:

providers: [
    { provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }]

et en déclarant le fournisseur NgbDateAdapter dans votre instruction @Component:

import { NgbDate, NgbDateStruct, NgbDateAdapter, NgbDateNativeAdapter } from '@ng-bootstrap/ng-bootstrap';


0 commentaires

0
votes

J'essaie de définir la valeur au format {year: 2020, month: 10, day: 30} cela fonctionne pour moi. Notez la valeur du jour, si le jour n'existe pas dans ce mois, la valeur ne s'affichera pas dans le sélecteur NgbDateAdapter. Je suis la solution de ici


0 commentaires