/ / come cambiare classe di corpo in angular2 e nel progetto dattiloscritto: angolare, dattiloscritto

come cambiare la classe del corpo nel progetto angular2 e dattiloscritto - angolare, dattiloscritto

Ho diverse classi per la pagina di accesso e altre pagine nell'applicazione, quindi dopo aver effettuato l'accesso ho bisogno di cambiare la classe dell'elemento body. Ecco come sto cercando di realizzare questo ..

index.html

<body [ngClass]="{
"dashboard site-navbar-small" :isAuthenticated,
"login-form login-form-second page-login-second" :!isAuthenticated
}">
<app-root>Loading...</app-root>

login.component.ts

export class LoginComponent {
@HostBinding("class.login-form.login-form-second.page-login-second")
siteNavbarSmallClass = false;
constructor(private auth:Auth){
this.siteNavbarSmallClass=this.auth.authenticated();
}
}

app.component.ts

 export class AppComponent {
@HostBinding("class.dashboard.site-navbar-small")
dashboardClass = false;
constructor(private auth:Auth){
this.dashboardClass=this.auth.authenticated();
}
}

Sto cercando di associare la direttiva ngClass a isAuthenticated campo .. ma non ne risente. Ho sentito che non siamo in grado di cambiare l'elemento del corpo tramite ts, come posso gestirlo comunque?

risposte:

3 per risposta № 1

Attacchi all'esterno <app-root> non sono supportati

Quello che puoi fare è usare selector: "body" in te AppComponent e

@HostBinding("class.dashboard")
dashboardClass = false;

@HostBinding("class.site-navbar-small")
siteNavbarSmallClass = false;

...

e quindi impostare le proprietà su true per aggiungere le classi.

o semplicemente

document.body.classList.add("dashboard");

3 per risposta № 2

Un modo è usare make the <body> tag l'elemento dell'app usando body come selettore e utilizzare l'associazione host per aggiornare le classi di elementi dell'app.

@Component({
selector: "body",
host:     {"[class.someClass]":"someField"}
})
export class AppComponent implements AfterViewInit {
someField: bool = false;
// alternatively to the host parameter in `@Component`
// @HostBinding("class.someClass") someField: bool = false;

ngAfterViewInit() {
someField = true; // set class `someClass` on `<body>`
}
}