Penso che si potrebbe sfruttare la sintassi get/set di dattiloscritto per rilevare quando la vostra proprietà autenticata del vostro servizio viene aggiornato:
private _authenticated:Boolean = false;
get authenticated():Boolean {
return this._authenticated ;
}
set authenticated (authenticated Boolean) {
// Plugin some processing here
this._ authenticated = authenticated;
}
Quando si assegna un valore, il "set autenticato "viene chiamato il blocco. Ad esempio, con tale codice:
this.authenticated = true;
Vedere questa domanda per maggiori dettagli:
Detto questo si potrebbe anche sfruttare una proprietà EventEmitter nel servizio. Quando la proprietà autenticata viene aggiornata, può essere generato l'evento corrispondente.
export class AuthService {
authenticatedChange: Subject<boolean> = new Subject();
constructor() {}
emit(authenticated) {
this.authenticatedChange.next(authenticated);
}
subscribe(component, callback) {
// set 'this' to component when callback is called
return this.authenticatedChange.subscribe(data => {
callback(component, data);
});
}
}
Vedere questo link per maggiori informazioni:
fonte
2016-02-21 19:28:15
Ciao @Sasxa quindi se ho per es. 5 componenti. 'home.component.ts',' footer.component.ts', 'navbar.component.ts',' x.component.ts' e 'user.component.ts'. Supponendo questi 5 componenti, e se voglio verificare l'autenticazione. Dovrò aggiungere inject il seguente: 'costruttore (privato _authService: AuthService) {...}' a tutti i miei 5 componenti. È corretto? e fai un 'ngOnInit' per tutti e 5 i componenti?Hai bisogno di aiuto per capire il concetto di autenticazione Angular2. –
Ci sono molte opzioni/scelte. Tutto dipende da cosa stai facendo. È possibile eseguire l'autenticazione a ogni componente o solo al componente root. È un argomento complesso, dovrai decidere cosa è meglio per la tua app (; – Sasxa
potresti indicarmi discussione/forum/blog/articolo su questo argomento? –