Keresés

Új hozzászólás Aktív témák

  • DNReNTi
    őstag

    Remek, akkor lehet tudsz segíteni. :)

    Adott 1 komponens és 1 service. A service, ami a userről tárol dolgokat, így néz ki (ami nekünk most fontos):

    @Injectable()
    export class Auth {

    //Store profile object in auth class
    userProfile: Object;

    constructor() {

    // Set userProfile attribute of already saved profile
    this.userProfile = JSON.parse(localStorage.getItem('profile'));

    Ezt a userProfile objectet szeretném felhasználni egy komponensben, aminek a constructora így fest:

    constructor(private auth: Auth, private authHttp: AuthHttp, private router: Router) {
    this.username = auth.userProfile['username'];
    }

    Kérdés:
    A komponens HTML kódjában simán tudok hivatkozni a username-re a következőképp: {{ auth.userProfile.username}}.

    Akkor a constructorban miért ['username'] módon érem a kívánt értéket?

    Furcsa, mert szerintem is mukodnie kellene, bar sose hasznaltam igy, es ezzel eljutunk oda: hogy egyebkent ennek igy mi ertelme? Marmint, a komponensedben rendelkezesre all az egesz Auth osztaly, benne minden user adattal, mi szukseg akkor kiszervezni plusz egy attributumba a felhasznalonevet? :) Egyebkent ez lehet (tenyleg csak tipp), valami TS specifikus dolog. Az Auth.userProfile tipusa sima Object, nincs interface vagy valami specifikus osztaly (pl UserProfile osztaly) ami leirna, hogy milyen attributumai vannak, tehat feltetelezheti, hogy nincs username property, es ezt te amugy nem is ellenorzod. Bar ha igy lenne akkor mar szerintem a TSC dobna warning-ot. Egyebkent pont ilyenkor jon jol hogy a TS tipusos, tessek hasznalni, egy userProfile ne legyen mar egy standard osztaly! :D Remelem segit megoldani. ;)

  • fordfairlane
    veterán

    Remek, akkor lehet tudsz segíteni. :)

    Adott 1 komponens és 1 service. A service, ami a userről tárol dolgokat, így néz ki (ami nekünk most fontos):

    @Injectable()
    export class Auth {

    //Store profile object in auth class
    userProfile: Object;

    constructor() {

    // Set userProfile attribute of already saved profile
    this.userProfile = JSON.parse(localStorage.getItem('profile'));

    Ezt a userProfile objectet szeretném felhasználni egy komponensben, aminek a constructora így fest:

    constructor(private auth: Auth, private authHttp: AuthHttp, private router: Router) {
    this.username = auth.userProfile['username'];
    }

    Kérdés:
    A komponens HTML kódjában simán tudok hivatkozni a username-re a következőképp: {{ auth.userProfile.username}}.

    Akkor a constructorban miért ['username'] módon érem a kívánt értéket?

    Javascriptben auth.userProfile['username'] és auth.userProfile.username ugyanazt jelenti, csereszabatos.

Új hozzászólás Aktív témák