Bagaimana cara menambahkan kelas ke tag body tanpa menjadikan body sebagai pemilih aplikasi dan menggunakan pengikatan host?
Saya mencoba menggunakan Renderer tetapi mengubah seluruh tubuh
Angular 2.x mengikat kelas pada tag tubuh
Saya sedang mengerjakan aplikasi angular2 besar dan mengubah pemilih root akan memengaruhi banyak kode, saya harus mengubah banyak kode
Kasus penggunaan saya adalah ini:
Ketika saya membuka komponen modal (dibuat secara dinamis), saya ingin menyembunyikan bilah gulir dokumen
document.body.className|classList
?class
kebody
. Jika Anda tidak akan menggunakan rendering server atau pekerja web, apa yang Anda takutkan?Jawaban:
Saya ingin berkomentar. Tetapi karena reputasi yang hilang saya menulis jawaban. Saya tahu dua kemungkinan untuk menyelesaikan masalah ini.
Yah dan mungkin lebih baik. Anda bisa menyuntikkan perender atau perender 2 (pada NG4) dan menambahkan kelas dengan perender.
EDIT UNTUK ANGULAR4:
sumber
import { DOCUMENT } from '@angular/platform-browser'
this.renderer.addClass(document.body, 'modal-open');
danthis.renderer.removeClass(document.body, 'modal-open');
@Inject(DOCUMENT)
tidak lagi diperlukan dalam konstruktorSaya pikir cara terbaik untuk melakukannya adalah kombinasi dari kedua pendekatan oleh DaniS di atas: Menggunakan penyaji untuk benar-benar mengatur / menghapus kelas, tetapi juga menggunakan injektor dokumen, jadi tidak terlalu bergantung pada
window.document
tetapi itu dapat diganti secara dinamis (misalnya, saat merender sisi server). Jadi seluruh kode akan terlihat seperti ini:sumber