pembaruan 2 ::slotted
::slotted sekarang didukung oleh semua browser baru dan dapat digunakan dengan ViewEncapsulation.ShadowDom
https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
perbarui 1 :: ng-sedalam
/deep/sudah usang dan diganti dengan ::ng-deep.
::ng-deep juga sudah ditandai usang, tetapi belum ada pengganti yang tersedia.
Ketika ViewEncapsulation.Nativedidukung dengan baik oleh semua browser dan mendukung penataan batas bayangan DOM, ::ng-deepmungkin akan dihentikan.
asli
Angular menambahkan semua jenis kelas CSS ke HTML yang ditambahkannya ke DOM untuk meniru bayangan DOM CSS enkapsulasi untuk mencegah gaya pendarahan masuk dan keluar dari komponen. Angular juga menulis ulang CSS yang Anda tambahkan agar sesuai dengan kelas yang ditambahkan ini. Untuk HTML ditambahkan menggunakan [innerHTML]kelas-kelas ini tidak ditambahkan dan CSS yang ditulis ulang tidak cocok.
Sebagai solusinya coba
- untuk CSS ditambahkan ke komponen
/* :host /deep/ mySelector { */
:host ::ng-deep mySelector {
background-color: blue;
}
- untuk CSS ditambahkan ke
index.html
/* body /deep/ mySelector { */
body ::ng-deep mySelector {
background-color: green;
}
>>>(dan yang setara /deep/tetapi /deep/bekerja lebih baik dengan SASS) dan ::shadowditambahkan dalam 2.0.0-beta.10. Mereka mirip dengan penggabung bayangan DOM CSS (yang sudah usang) dan hanya berfungsi dengan encapsulation: ViewEncapsulation.Emulatedyang merupakan default di Angular2. Mereka mungkin juga bekerja samaViewEncapsulation.None tetapi kemudian hanya diabaikan karena mereka tidak perlu. Combinator ini hanya solusi perantara sampai fitur yang lebih canggih untuk penataan komponen silang didukung.
Pendekatan lain adalah menggunakan
@Component({
...
encapsulation: ViewEncapsulation.None,
})
untuk semua komponen yang memblokir CSS Anda (tergantung pada tempat Anda menambahkan CSS dan di mana HTML ingin Anda gaya - mungkin semua komponen dalam aplikasi Anda)
Memperbarui
Contoh Plunker
index.html?