ng-deep не рекомендуется, поэтому вы должны использовать компонент без инкапсуляции, поэтому:
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
encapsulation: ViewEncapsulation.None,
})
export class AppComponent {}
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss'],
encapsulation: ViewEncapsulation.None,
})
export class ModalComponent {}
Созданные вами классы css должны инкапсулировать его в div с другим классом и определять их таким образом :
компонент приложения. css
.custom1 .mat-select-panel {
border-top: none !important;
min-width: 100% !important;
position: absolute;
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.15);
margin-left: 17px !important;
margin-top: -10px !important;
}
компонент приложения. html
<div class="custom1">
<!-- here mat-select whith class .mat-select-panel -->
</div>
модальный компонент. css
.custom2 .mat-select-panel {
min-width: calc(100% + 7px) !important;
position: absolute;
top: 100px;
left: 20px;
}
модальный компонент. html
<div class="custom2">
<!-- here mat-select whith class .mat-select-panel -->
</div>
Для получения дополнительной информации см .:
https://angular.io/guide/component-styles#view -инкапсуляция
https://material.angular.io/guide/customizing-component-styles
https://material.angular.io/guide/theming#defining -a-custom-theme