Voici la seule solution que j'ai trouvée pour celle-ci :
Tout d'abord, créez const :
const MY_DATE_FORMATS = {
parse: {
dateInput: {month: 'short', year: 'numeric', day: 'numeric'}
},
display: {
// dateInput: { month: 'short', year: 'numeric', day: 'numeric' },
dateInput: 'input',
monthYearLabel: {year: 'numeric', month: 'short'},
dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},
monthYearA11yLabel: {year: 'numeric', month: 'long'},
}
};
Ensuite, vous devez étendre NativeDateADapter :
export class MyDateAdapter extends NativeDateAdapter {
format(date: Date, displayFormat: Object): string {
if (displayFormat == "input") {
let day = date.getDate();
let month = date.getMonth() + 1;
let year = date.getFullYear();
return this._to2digit(day) + '/' + this._to2digit(month) + '/' + year;
} else {
return date.toDateString();
}
}
private _to2digit(n: number) {
return ('00' + n).slice(-2);
}
}
Dans la fonction de format, vous pouvez choisir le format que vous voulez
Et enfin, la dernière étape, vous devez l'ajouter dans les fournisseurs de module :
providers: [
{provide: DateAdapter, useClass: MyDateAdapter},
{provide: MD_DATE_FORMATS, useValue: MY_DATE_FORMATS},
],
Et c'est tout. Je ne peux pas croire qu'il n'y ait pas de moyen facile de changer le format de la date via @Input mais espérons que cela sera implémenté dans une future version de material 2 (actuellement beta 6).
0 votes
Voici un exemple gist.github.com/fxck/efe4ccff13d99ee9a2dcf82365909168
1 votes
Merci pour l'aide mais je ne veux pas utiliser mon propre fournisseur de données, je veux juste changer le format de la date selon la documentation où il est écrit que l'adaptateur de date native peut être utilisé.