Ответ - добавить родительский класс в диалог и использовать ::ng-deep
для применения стилей только для этого компонента
Вы можете добавить класс в диалог, как показано ниже
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
width: '250px',
data: {name: this.name, animal: this.animal},
panelClass: 'my-parent-class'
});
и добавить стили как
.my-parent-class ::ng-deep table {
border-collapse: collapse;
border-spacing: 0;
border:2px solid black;
}
.my-parent-class ::ng-deep th {
border:2px solid black;
}
.my-parent-class ::ng-deep td {
border:1px solid black;
}
Объяснение : диалоговое окно материала является динамическим c компонентом
Stati c компонентом HTML
<table _ngcontent-c0>...</table>
Stati c компонент CSS
table[_ngcontent-c0] { ... }
Dynami c компонент HTML
<table>...</table>
Dynami c компонент CSS
table { ... }
Обратите внимание на разницу для атрибута компонента stati c _ngcontent-c0
, добавленного angular, Angular используйте этот Techni c для создания определенных c стилей компонента (чтобы применить стили для этого конкретного компонента), но для динамического c компонента атрибут не добавляется. По этой причине ваши стати c стили компонентов не применяются к динамичному c компоненту
Чтобы сделать эту работу, мы использовали ::ng-deep
перед тем, как какой-либо класс удалил этот атрибут _ngcontent-c0
и выберите динамический c компонент, , чтобы при использовании ::ng-deep
ваши стили больше не указывались для компонента c (он будет применяться ко всем компонентам). По этой причине мы используем родительский класс для применять стили только для этого компонента и динамически создаваемого компонента.