Il y a deux classes importantes pour gérer ngbDate : une pour formater la date : DateParserFormater, et une autre pour changer la valeur que vous recevez/envoyez de/vers un ngb-datepicker : DateAdapter.
Vous pouvez donc créer un customDateAdapter et un customDateParserFormatter. Mais ne vous préoccupez pas des noms : il n'y a que deux classes injectables, comme par exemple
Pour customDateAdapter
@Injectable()
export class CustomDateAdapter {
fromModel(value: string): NgbDateStruct
{
if (!value)
return null
let parts=value.split('/');
return {year:+parts[0],month:+parts[1],day:+parts[2]}
}
toModel(date: NgbDateStruct): string // from internal model -> your mode
{
return date?date.year+"/"+('0'+date.month).slice(-2)
+"/"+('0'+date.day).slice(-2):null
}
}
Oui, une classe injectable avec deux fonctions, l'une pour transformer une NgbDate en chaîne et l'autre pour transformer une chaîne en NgbDate. N'oubliez pas que cela modifie votre "modèle".
Pour CustomDateParserFormatter
@Injectable()
export class CustomDateParserFormatter {
parse(value: string): NgbDateStruct
{
if (!value)
return null
let parts=value.split('/');
return {year:+parts[0],month:+parts[1],day:+parts[2]} as NgbDateStruct
}
format(date: NgbDateStruct): string
{
return date?date.year+"/"+('0'+date.month).slice(-2)+"/"+('0'+date.day).slice(-2):null
}
}
Il s'agit à nouveau d'une classe injectable avec deux fonctions, l'une pour transformer une NgbDate en chaîne de caractères et l'autre pour transformer une chaîne de caractères en NgbDate. N'oubliez pas que cela change le "format" de la date - utile si vous le souhaitez, par exemple jj/MM/aaaa -.
Il suffit ensuite d'ajouter les fournisseurs dans votre composant
providers: [{provide: NgbDateAdapter, useClass: CustomDateAdapter},
{provide: NgbDateParserFormatter, useClass: CustomDateParserFormatter}]
Dans le cadre de la stackblitz voir la définition du composant, vous pouvez choisir, par exemple
@Component({
selector: 'ngbd-datepicker-adapter',
templateUrl: './datepicker-adapter.html',
providers: [{provide: NgbDateAdapter, useClass: NgbDateNativeAdapter}]
})
ou
@Component({
selector: 'ngbd-datepicker-adapter',
templateUrl: './datepicker-adapter.html',
providers: [{provide: NgbDateAdapter, useClass: CustomDateAdapter},
{provide: NgbDateParserFormatter, useClass: CustomDateParserFormatter}]
})
même vous pouvez écrire
@Component({
selector: 'ngbd-datepicker-adapter',
templateUrl: './datepicker-adapter.html',
providers: [{provide: NgbDateParserFormatter, useClass: CustomDateParserFormatter}]
})
Pour gérer les objets comme {année, mois, jour}, mais en changeant le "masque" - et la façon dont vous saisissez la date
NOTE : Vous pouvez également ajouter les fournisseurs au module.