Ich habe eine eckige App, die Benutzeranmeldung und -abmeldung hat. Ich zeige eine Startseite als Startseite an, bevor sich ein Benutzer anmeldet. Ich möchte ein Hintergrundbild nur auf der Begrüßungsseite aktivieren. Sobald sich der Benutzer anmeldet, muss das Hintergrundbild verschwinden. Wenn sich der Benutzer abmeldet, wird er zur Begrüßungsseite weitergeleitet, auf der das Hintergrundbild erneut angezeigt werden muss.@HostBinding Klasse von Kindkomponente deaktivieren Angular 4
Ich habe versucht, @HostBinding in der app.component.ts durch Umbenennen des Selektors zu "body".
app.component.ts
import {Component, HostBinding, Input} from '@angular/core';
import {InputMask} from "primeng/primeng";
@Component({
selector: 'body',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
path = '../assets/img/AvayaHome.jpg';
title = 'app';
toggleClass = true;
@HostBinding('class.bodyClass') isWelcomePage = this.toggleClass;
}
Hier ist mein CSS.
app.component.css
.bodyClass {
background-image: url("../assets/img/AvayaHome.jpg");
}
Hier ist meine index.html
<!doctype html>
<html lang="en">
<head>
<title> Something </title>
</head>
<body class="bodyClass">
<app-welcome-page></app-welcome-page>
</body>
</html>
Ich bin ermöglicht die CSS-Stil für bodyClass von toggleClass als wahr zuweisen. Sobald sich der Benutzer anmeldet, ändere ich den Wert von toggleClass (in der app.component.ts) von der Kindkomponente.
Hier ist meine login.component.ts
onLogin() {
console.log('onLogin() invoked:', this._email, ':' , this.password);
if (this._email == null || this.password == null) {
this.errorMessage = 'All fields are required';
return;
}
this.errorMessage = null;
this.loginservice.authenticate(this._email, this.password);
this.appComponent.toggleClass = true;
this.router.navigate(['/dashboard']);
}
Der Wert des toggleClass ändert sich, wenn sich der Benutzer anmeldet auf FALSCH. Aber ich sehe immer noch das Hintergrundbild. Nicht sicher, was ich falsch mache. Jede Hilfe wird geschätzt.
Does ngClass Arbeit für Body-Tag? –
NgClass funktioniert für jedes Tag, aber es muss sich in Ihrer Komponente befinden. –
Sie sollten eine _root_ Komponente haben, die das Body-Tag fälscht (überspannt die gesamte Website), wenn Sie solche Dinge tun möchten. –