I einen Winkel 2 Service apptService
die Observable<Appointment[]>
kehrt die ich dann die lodash bestellen Verwendung sortBy
Funktion:Sortiernummer unter Verwendung Lodash und Maschinenschrift
class Appointment {
id: string;
distance: number;
appointmentDate: date;
}
getAppointments(sortOrder) {
this.appointments = this
.apptService
.getAppointments()
.map(v => _.sortBy(v, sortOrder));
}
Ich nenne getAppointments
eine Sortierfunktion wie vorbei so:
getAppointments((app: Appointment) => app.id);
getAppointments((app: Appointment) => app.distance);
getAppointments((app: Appointment) => app.appointmentDate);
Die appointmentDate
und id
Sorten sind wie erwartet, aber beim Sortieren nach distance
sind die Werte alphanumerisch geordnet dh: 12, 123, 15, 3
Vorerst habe ich eine unschöne Lösung mit bodged:
getAppointments((app: Appointment) => {
// this will only work for appointments up to 100000 miles away
var s = "00000" + app.distance.toString();
return s.substr(s.length - 5);
});
aber das bricht mir das Muster, so dass ich bin auf der Suche nach einer besseren Lösung, oder in der Hoffnung zumindest um zu verstehen, warum dies geschieht.
lodash wurde für die Sortierung verwendet, weil mir die Syntax und die Leichtigkeit der Übergabe der Sortierpfeilfunktion gefallen hat, aber ich bin nicht an die Verwendung gebunden, wenn es eine bessere Lösung gibt.
Und tut mir leid, aber kein Plumpser, ich konnte nicht Lodash und Typoskript überhaupt dort zusammenarbeiten.
Es könnte sein, dass Ihre Instanz noch ein String ist, das heißt nicht auf die richtige Art von der HTTP-Antwort json abgebildet, versuchen: getAppointments ((App: Termin) => parseInt (app.distance)); – Meir
Bitte teilen Sie uns eine Dump von einem Ihrer Termine. Ich vermute, dass die Entfernung eine Zeichenfolge ist. Sie können versuchen, den Wert zu analysieren, indem Sie der Anweisung ein + hinzufügen: 'getAppointments ((app: Appointment) => + app.appointmentDate);' – Polochon
@meir typescript lässt 'parseInt (app.distance)' as 'nicht zu parseInt' ist nur für Strings. Ich könnte 'parseInt (app.distance.toString())' 'aber dann denke ich, dass ich wieder da bin wo ich angefangen habe. – paul