[解決済み】host要素にclassを追加する方法は?
2022-04-04 19:42:16
質問
コンポーネントに追加する方法がわかりません。
<component></component>
ダイナミックな
クラス
属性がありますが、テンプレート html (component.html) の中にあります。
私が見つけた唯一の解決策は、"ElementRef" ネイティブ要素を介してアイテムを修正することです。この解決策は、非常に単純であるべきことを行うには少し複雑なようです。
また、CSSをコンポーネントスコープの外で定義しなければならず、コンポーネントのカプセル化を壊してしまうという問題もあります。
もっと簡単な解決策はないのでしょうか?例えば
<root [class]="..."> .... </ root>
をテンプレートの中に入れてください。
解決方法は?
この方法だと、コンポーネントの外側にCSSを追加する必要がありません。
@Component({
selector: 'body',
template: 'app-element',
// prefer decorators (see below)
// host: {'[class.someClass]':'someField'}
})
export class App implements OnInit {
constructor(private cdRef:ChangeDetectorRef) {}
someField: boolean = false;
// alternatively also the host parameter in the @Component()` decorator can be used
@HostBinding('class.someClass') someField: boolean = false;
ngOnInit() {
this.someField = true; // set class `someClass` on `<body>`
//this.cdRef.detectChanges();
}
}
このCSSはコンポーネント内部で定義され、セレクタは、クラス
someClass
がホスト要素に(外側から)設定されている場合。
:host(.someClass) {
background-color: red;
}
関連
-
[解決済み】angular 4アプリにReactiveFormsModuleを追加すると、NgControl用のプロバイダがないエラーが発生する。
-
[解決済み】Angularのエラーです。NgModuleアノテーションを追加してください。
-
[解決済み] @viewChildが機能しない - プロパティnativeElementがundefinedで読み込めない
-
[解決済み] Angular 2 ルーターベースなし href = "/stock/stock_detail.html?
-
[解決済み] ウェブストーム Must be lvalue」の意味するところ
-
[解決済み] Angularアプリのシンタックスエラー。予期しないトークン <
-
[解決済み] Angular 2 : NgModule のメタデータが見つかりません。
-
[解決済み] Angular:*ngClassを使った条件付きクラス
-
[解決済み] コンポーネントテンプレートで要素を選択するには?
-
[解決済み】Angularを使用してデータ属性を記述するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angularのエラーです。NgModuleアノテーションを追加してください。
-
[解決済み】angularJS2プロジェクトでsystemjs.config.jsファイルをどこに置くか/見つけるか?
-
[解決済み] Angular material Angular Material コアテーマが見つかりませんでした。
-
[解決済み] Angular EXCEPTION: Http用のプロバイダがありません。
-
[解決済み] typescriptを使用して、同じhtml DOM要素で「シングルクリック」と「ダブルクリック」を処理する方法:Angular 2または4?
-
[解決済み] CLIでコンポーネントを削除する最も良い方法は何ですか?
-
[解決済み] ローカルのワークスペース・ファイル('angular.json')が見つかりませんでした。しかし、同じコードが別のコンピュータで動作します
-
[解決済み] なぜ mat-tables matRowDef は 2 つの変数を含むのですか?
-
[解決済み] Angularで電話番号の入力をフォーマットする
-
[解決済み] ローカルホストが私のアンギュラーアプリに対して無効な応答を送信しました。