webentwicklung-frage-antwort-db.com.de

Wie entkomme ich Zeichen in einem Angular Datumsrohr

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.

9
Thunderforge

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.

13
Daniel P

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.

1
Igor

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.

1
Rich McCluskey

Das funktioniert für mich {{heute | Datum: "d 'Tage bisher in' LLLL"}}

0