[解決済み] Angular2 bodyタグにクラスを追加する
2022-05-13 18:43:02
質問
どのようにすれば クラス を ボディ タグを作成することなく ボディ をアプリのセレクタとして使用し、ホストバインディングを使用せずに?
レンダラを使ってみましたが、ボディ全体が変更されてしまいます。
Angular 2.xでbodyタグにクラスをバインドする。
私は大きなAngular2アプリに取り組んでいて、ルートセレクタを変更すると多くのコードに影響を与えるので、多くのコードを変更しなければなりません。
私のユースケースはこれです。
モーダルコンポーネント (動的に作成される) を開くときに、ドキュメントのスクロールバーを隠したい。
どのように解決するのですか?
私はコメントするのが大好きです。しかし、私は答えを書く行方不明の評判に起因する。 さて、私はこの問題を解決するために2つの可能性を知っている。
- グローバルドキュメントをインジェクトします。nativescript などがそれをサポートしているかどうか分からないので、これはベストプラクティスではないかもしれません。しかし、少なくとも純粋な JS を使用するよりはましです。
コンストラクタ(@Inject(DOCUMENT) private document: ドキュメント) {} ngOnInit(){ this.document.body.classList.add('test')を実行します。 }
さて、そしておそらくさらに良い方法です。レンダラーまたはレンダラー2(NG4の場合)をインジェクトして、レンダラーでクラスを追加することができます。
export class myModalComponent implements OnDestroy { (エクスポートクラス myModalComponent は OnDestroy を実装しています) コンストラクタ(private renderer: Renderer) {。 this.renderer.setElementClass(document.body, 'modal-open', true); ngOnDestroy() { this.renderer.setElementClass(document.body, 'modal-open', false); }
angular4用に編集しました。
import { Component, OnDestroy, Renderer2 } from '@angular/core'; export class myModalComponent implements OnDestroy { (エクスポートクラス myModalComponent は OnDestroy を実装しています) コンストラクタ(private renderer: Renderer2) {。 this.renderer.addClass(document.body, 'modal-open'); ngOnDestroy() { this.renderer.removeClass(document.body, 'modal-open'); } ngOnDestroy() { this.renderer.removeClass(document.body, 'modal-open') }
関連
-
[解決済み] Angular:*ngClassを使った条件付きクラス
-
[解決済み] Angular 2におけるEventEmitter.next()とEventEmitter.emit()の相違点
-
[解決済み] コンポーネントクラスからテンプレート参照変数にアクセスする
-
[解決済み] Angularで、コントロールが作成された後、FormControlにバリデータを追加する方法は?
-
[解決済み] Angular / Angular Materialでmat-horizontal-stepperのステップをプログラムで移動させることは可能ですか?
-
[解決済み] Angular v5からAngular v6にプロジェクトをアップグレードしたい。
-
[解決済み] 文字列|ヌル'型の引数は、文字列'型のパラメータに代入できません。タイプ 'null' はタイプ 'string' に割り当てられません。
-
[解決済み] Angular2 bodyタグにクラスを追加する
-
[解決済み] AngularでFormArrayからすべての項目を削除する
-
[解決済み] Karma/Jasmineのテストで「[object ErrorEvent] thrown」エラーが発生した場合、どのようにデバッグすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ng buildの後にangular-cliのdist-folderのパスを変更するには?
-
[解決済み] Angular 2におけるEventEmitter.next()とEventEmitter.emit()の相違点
-
[解決済み] コンポーネントクラスからテンプレート参照変数にアクセスする
-
[解決済み] Angularで、コントロールが作成された後、FormControlにバリデータを追加する方法は?
-
[解決済み] Angular / Angular Materialでmat-horizontal-stepperのステップをプログラムで移動させることは可能ですか?
-
[解決済み] 文字列|ヌル'型の引数は、文字列'型のパラメータに代入できません。タイプ 'null' はタイプ 'string' に割り当てられません。
-
[解決済み] Angular2 bodyタグにクラスを追加する
-
[解決済み] AngularでFormArrayからすべての項目を削除する
-
[解決済み] RxJSのmap演算子でエラーを出す方法 (angular)
-
[解決済み] Karma/Jasmineのテストで「[object ErrorEvent] thrown」エラーが発生した場合、どのようにデバッグすればよいですか?