Ich habe eine Angular Datumsvariable today
, die ich wie folgt benutze: date pipe on:
{{today | date:'LLLL d'}}
13. Februar
Ich möchte es jedoch so aussehen lassen:
Im Februar waren es noch 13 Tage
Wenn ich einen naiven Ansatz versuche, erhalte ich folgendes Ergebnis:
{{today | date:'d days so far in LLLL'}}
13 13PM201818 18o FRPMr im Februar
Dies liegt daran, dass d
sich auf den Tag bezieht.
Wie kann ich diese Zeichen in einer Angular -Data-Pipe umgehen? Ich habe \d
und so versucht, aber das Ergebnis änderte sich nicht mit den hinzugefügten Backslashes.
Wie wäre es damit:
{{today | date:'d \'days so far in\' LLLL'}}
Alles in einfachen Anführungszeichen wird ignoriert. Vergiss nicht, ihnen zu entkommen.
Die einzige Alternative zum Aneinanderreihen mehrerer Pipes, wie von RichMcCluskey vorgeschlagen, wäre die Erstellung einer benutzerdefinierten Pipe, die mit dem übergebenen Datum im momentjs-Format aufruft. Dann könnten Sie dieselbe Syntax verwenden, einschließlich der Escape-Sequenz, die momentjs unterstützt.
So etwas könnte funktionieren, es ist keine erschöpfende Lösung, da es sich überhaupt nicht um die Lokalisierung handelt und es keinen Fehler bei der Verarbeitung von Code oder Tests gibt.
import { Inject, Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'momentDate', pure: true })
export class MomentDatePipe implements PipeTransform {
transform(value: any, pattern: string): string {
if (!value)
return '';
return moment(value).format(pattern);
}
}
Und dann der aufrufende Code:
{{today | momentDate:'d [days so far in] LLLL'}}
Alle Formatangaben finden Sie in der Dokumentation zum Format .
Denken Sie daran, dass Sie momentjs
entweder als Importanweisung importieren, in Ihre cli-Konfigurationsdatei importieren lassen oder auf die Bibliothek von der Stamm-HTML-Seite (wie index.html) referenzieren müssen.
Meines Wissens ist dies zum Zeitpunkt dieser Antwort mit der Datums-Pipe Angular nicht möglich. Eine Alternative ist die Verwendung mehrerer Datums-Pipes wie folgt:
{{today | date:'d'}} days so far in {{today | date:'LLLL'}}
BEARBEITEN:
Nachdem ich dies gepostet hatte, habe ich die Lösung von @ Gh0sT ausprobiert, und es hat funktioniert. Ich denke, es gibt eine Möglichkeit, eine Datums-Pipe zu verwenden.
Das funktioniert für mich {{heute | Datum: "d 'Tage bisher in' LLLL"}}