Để bỏ qua lỗi không được dùng nữa ::ng-deep
, tôi thường tắt ViewEncapsulation
. Mặc dù đây không phải là cách tiếp cận tốt nhất, nhưng nó đã phục vụ tôi rất tốt.
Để tắt ViewEncapsulation
, hãy làm như sau trong thành phần của bạn:
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class HeaderComponent {
}
Điều này sẽ làm cho các kiểu .scss trong thành phần này chung cho toàn bộ ứng dụng. Để không cho phép các kiểu đi lên chuỗi tới các thành phần chính và anh chị em, hãy bao bọc toàn bộ phạm vi bằng bộ chọn như sau:
app-header {
}
Bây giờ, các kiểu được chỉ định ở đây sẽ đi xuống các thành phần con, vì vậy bạn phải đặc biệt hơn với các bộ chọn css của mình và lưu ý đến chữ p và q của bạn khi thêm CSS (có thể thêm bộ chọn con được chỉ định trong ứng dụng Angular của bạn và sau đó là các kiểu của nó).
Tôi nói đó không phải là cách tiếp cận tốt nhất vì đoạn trên, nhưng điều này đã phục vụ tôi rất tốt.
::ng-deep
không đi đâu cả. Nó sẽ luôn là một cài đặt bạn có thể bật. Hoàn toàn không có cách nào họ có thể xóa nó ngay bây giờ mà không có phản ứng dữ dội từ cộng đồng. Xem có bao nhiêu kết quả trả lại cho tìm kiếm này github.com/search?q=%3A%3Ang-deep&type=Code - giống như nói rằng thuộc tính css!important
sẽ biến mất