私は、ユーザーのログインとログアウトがある角度のあるアプリを持っています。私は、ユーザーがログインする前にホームページとしてウェルカムページを表示しています。ウェルカムページでのみ、バックグラウンドイメージを有効にします。ユーザーがログインすると、背景イメージが消える必要があります。ユーザーがログアウトすると、ウェルカムページにリダイレクトされ、背景イメージを再度表示する必要があります。@HostBinding子コンポーネントからのクラスを無効にする角度4
私はapp.component.tsで@HostBindingを使用して、セレクタの名前を '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;
}
ここは私のCSSです。
app.component.css
.bodyClass {
background-image: url("../assets/img/AvayaHome.jpg");
}
は、ここに私のindex.html
<!doctype html>
<html lang="en">
<head>
<title> Something </title>
</head>
<body class="bodyClass">
<app-welcome-page></app-welcome-page>
</body>
</html>
私は本当のようtoggleClassを割り当てることによってbodyClassのCSSスタイルを可能にしています。ユーザーがログインすると、(app.component.ts内にある)toggleClassの値を子コンポーネントから変更します。
は、ここに私の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']);
}
toggleClassの値は時にユーザーがログインするFALSEに変更されています。しかし、私はまだ背景のイメージを見ています。私が間違っていることを確認していない。どんな助けもありがとう。
んngClass作業を定義しますか? –
NgClassはどのタグでも機能しますが、コンポーネント内にある必要があります。 –
このようなことをしたい場合は、bodyタグを(ウェブサイト全体に)偽装する_root_コンポーネントが必要です。 –