Mám uhlovú aplikáciu 2, ktorá má triedus názvom Používateľ. Tento používateľ má atribút s názvom deleted_at, ktorý je buď null alebo obsahuje datetime, samozrejme, že používateľ je odstránený, ak vlastnosť deleted_at nie je null. Takto vyzerá môj súbor user.ts:
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";
}
}
}
Teraz som čakal, že vo svojej šablóne môžem jednoducho zavolať jednoduchým riadkom:
{{ user.name }}
To však nevracia nič, ako môžete volať určité funkcie v šablóne uhlového 2? Alebo to nie je povolené?
edit: aby som to trochu vyčistil, je to užívateľ triedy, ktorý používam vo svojej súčasti user-list.component.ts, v tomto komponente je spracovaných viacero používateľov.
odpovede:
12 pre odpoveď č. 1Buď zavoláte metódu takto:
{{user.name()}} // instead of {{user.name}}
Pre tento prístup si musíte byť vedomí, že prídete o kontext vykonávania (this
). Viac informácií nájdete v tejto otázke:
Alebo definujte svoju metódu ako getra, aby ste ju mohli použiť user.name
vo vašej šablóne:
get name() {
if (this.deleted_at === null) {
return this.first_name;
} else {
return "DELETED";
}
}
0 pre odpoveď č. 2
Ak šablóna, na ktorú odkazujete, pochádza z vyššie uvedeného komponentu, môžete to urobiť jednoducho {{ name() }}
, V Angular 2 nemusíte odkazovať na svojeKomponent najprv zavolal metódy, ako tomu bolo v prípade Angular 1. V prípade, že je vaša trieda iba modelom, ktorý ste uviedli vo svojej komponente, musíte najskôr získať odkaz na tento model a potom zavolať metódu {{ user.name() }}
, Ak je však vaša metóda iba jednoduchým prístupom, namiesto prístupu k tejto metóde by som navštívil iba verejné vlastníctvo.