Qualcuno può fornirmi un esempio di come posso creare un filtro angolare in TypeScript che utilizza l'iniezione delle dipendenze. In fondo è quello che attualmente ho, che funziona bene, ma quello che voglio fare è la funzione che voglio avere accesso a $ filter, in modo che possa cambiare la data di ritorno della riga. ToString() in $ filter 'Data'. In questo modo, utilizzo il filtro data incorporato per mostrare una bella breve data amichevole.Filtro AngularJS con TypeScript e iniezione
class FriendlyDateFilter {
public static Factory() {
return function (input): string {
if (angular.isDate(input)) {
var date: Date = input;
var today = new Date();
var days = Math.abs(getDaysBetweenDates(today, date));
if (days < 7) {
var dayInWeek = date.getDay();
switch (dayInWeek) {
case 0:
return "Sunday";
break;
case 1:
return "Monday";
break;
case 2:
return "Tuesday";
break;
case 3:
return "Wednesday";
break;
case 4:
return "Thursday";
break;
case 5:
return "Friday";
break;
case 6:
return "Saturday";
break;
}
} else {
return date.toString();
}
} else {
return input;
}
}
function getDaysBetweenDates(d0, d1) {
var msPerDay = 8.64e7;
// Copy dates so don't mess them up
var x0: any = new Date(d0);
var x1: any = new Date(d1);
// Set to noon - avoid DST errors
x0.setHours(12, 0, 0);
x1.setHours(12, 0, 0);
// Round to remove daylight saving errors
return Math.round((x1 - x0)/msPerDay);
}
}
}
}
angular.module("ReadingLog").filter("FriendlyDateFilter", FriendlyDateFilter.Factory);
Aggiungi $ filtro come argomento per la funzione di fabbrica? Ecco come lo faresti in JS. –
Sì, presumo che sia ciò di cui ho bisogno, ma ho anche bisogno di usare $ inject da qualche parte/in qualche modo e questo è quello che non capisco come fare. –
In JS, si farebbe 'FriendlyDateFilter.Factory. $ Inject = ['$ filter']'. O non faresti altro che usare ng-annotate durante la compilazione. –