webentwicklung-frage-antwort-db.com.de

Aufrufmethode aus einer Angular 2-Klasse in der Vorlage

Ich habe eine Anwendung in Winkel 2, die eine Klasse mit dem Namen Benutzer hat. Dieser Benutzer hat ein Attribut mit dem Namen deleted_at, das entweder null ist oder eine Datumszeit enthält. Offensichtlich wird der Benutzer gelöscht, wenn die Eigenschaft deleted_at nicht null ist. So sieht meine user.ts-Datei aus:

User.ts

export class User {
    id: number;
    email: string;
    created_at: string;
    first_name: string;
    last_name: string;
    deleted_at: any;

    name() {
        if (this.deleted_at === null) {
            return this.first_name;
        } else {
            return 'DELETED';
        }
    }
}

Nun erwartete ich, dass ich in meiner Vorlage nur mit einer einfachen Zeile den Namen aufrufen könnte:

{{ user.name }}

Dies gibt jedoch nichts zurück, wie kann man bestimmte Funktionen in der Winkel-2-Vorlage aufrufen? Oder ist das nicht erlaubt?

Edit: Um etwas zu löschen, ist dies eine Klasse User, die ich in meiner Komponente benutze. user-list.component.ts . In dieser Komponente werden mehrere Benutzer behandelt.

19

Entweder rufen Sie die Methode folgendermaßen auf:

{{user.name()}} // instead of {{user.name}}

Bei diesem Ansatz müssen Sie wissen, dass Sie den Ausführungskontext (this) verlieren. Weitere Informationen finden Sie in dieser Frage:

Oder Sie definieren Ihre Methode als Getter, damit Sie user.name in Ihrer Vorlage verwenden können:

get name() {
  if (this.deleted_at === null) {
    return this.first_name;
  } else {
    return 'DELETED';
  }
}
15

Wenn die Vorlage, auf die Sie sich beziehen, von Ihrer Komponente oben stammt, können Sie einfach {{ name() }} ausführen. In Angular 2 müssen Sie sich nicht zuerst auf Ihre Komponente beziehen, um Methoden aufzurufen, wie es in Angular 1 der Fall war. Falls Ihre Klasse nur ein Modell ist, das Sie in Ihrer Komponente deklariert haben, müssen Sie zuerst den Verweis auf dieses Modell abrufen und anschließend Ihre Methode {{ user.name() }} aufrufen. Wenn Ihre Methode jedoch nur ein einfacher Getter ist, würde ich einfach auf eine öffentliche Eigenschaft zugreifen, anstatt dort eine Methode aufzurufen.

0
LordTribual