PEMAKAIAN
::ng-deep
, >>>
dan /deep/
menonaktifkan enkapsulasi tampilan untuk aturan CSS tertentu, dengan kata lain, ini memberi Anda akses ke elemen DOM, yang tidak ada di HTML komponen Anda. Misalnya, jika Anda menggunakan Angular Material (atau pustaka pihak ketiga lainnya seperti ini), beberapa elemen yang dihasilkan berada di luar area komponen Anda (seperti dialog ) dan Anda tidak dapat mengakses elemen tersebut secara langsung atau menggunakan CSS biasa cara. Jika Anda ingin mengubah gaya elemen tersebut, Anda dapat menggunakan salah satu dari tiga hal tersebut, misalnya:
::ng-deep .mat-dialog {
}
Untuk saat ini tim Angular merekomendasikan membuat manipulasi "dalam" hanya dengan enkapsulasi tampilan TEREMULASI .
BANTAHAN
Manipulasi "dalam" sebenarnya juga tidak digunakan lagi , TETAPI masih berfungsi untuk saat ini, karena Angular melakukan dukungan pra-pemrosesan (jangan terburu-buru untuk menolak ::ng-deep
hari ini, lihat praktik penghentian terlebih dahulu).
Bagaimanapun, sebelum mengikuti cara ini, saya sarankan Anda untuk melihat cara menonaktifkan pendekatan enkapsulasi tampilan (yang juga tidak ideal, ini memungkinkan gaya Anda bocor ke komponen lain), tetapi dalam beberapa kasus, ini cara yang lebih baik. Jika Anda memutuskan untuk menonaktifkan enkapsulasi tampilan, sangat disarankan untuk menggunakan kelas tertentu untuk menghindari perpotongan aturan CSS, dan terakhir, hindari kekacauan di lembar gaya Anda. Sangat mudah untuk menonaktifkannya langsung di file komponen .ts
:
@Component({
selector: '',
template: '',
styles: [''],
encapsulation: ViewEncapsulation.None
})
Anda dapat menemukan info selengkapnya tentang enkapsulasi tampilan di artikel ini .
/deep/
dan::ng-deep
keduanya sudah usang, saya sarankan Anda untuk membaca jawaban ini stackoverflow.com/a/49308475/2275011 dan komentar untuk detail dan solusi lebih lanjut.