Цель : CSS влияет только на включенный компонент, но не на другие. Я хотел повлиять только на раскрывающийся список, а не на другие поля ввода текста:
![enter image description here](https://i.stack.imgur.com/Caidv.png)
Справочная информация / проблема : я понимаю, почему это так влияет на несколько элементов на одной странице (поле mat-form-field). Но не понимаю, почему это повлияет на ДРУГИЕ страницы. Я смотрел на это, но все еще не был уверен.
Что я пытался : Например, у меня изначально было:
::ng-deep .mat-form-field-appearance-outline .mat-form-field-flex {
height: 40px !important
}
::ng-deep .mat-form-field-infix {
padding-top: 1px !important;
padding-bottom: 2px !important;
}
Но это влияло на расстояние между всеми формами. поля на странице, , поэтому я отредактировал его так: :
::ng-deep .mat-form-field-appearance-outline .mat-form-field-flex {
height: 40px !important
}
::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix {
padding-top: 1px !important;
padding-bottom: 2px !important;
}
Прочее без изменений CSS:
.title-container {
position: relative;
margin-top: 8px;
}
.language-field {
position: absolute;
right: 0;
top: 0;
margin-top: -16px;
width: 115px;
height: 20px !important;
}
Это исправлено, но все еще Странно для меня, что изменение чего-либо на login.component. css повлияет на все другие страницы сайта, например profile.component. css
Здесь ассоциируется HTML для login.component:
<div class="title-container">
<mat-card-title class="text-center">
Please Sign In
</mat-card-title>
<form [formGroup]="_siteForm">
<mat-form-field class="language-field" appearance="outline">
<mat-select (selectionChange)="changeSite($event)" [value]="languages[i].value">
<mat-option *ngFor="let language of languages" [value]="language.value">
{{language.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
</form>
</div>
Когда я исследовал это : я обнаружил некоторые статьи SO (такие как Angular 2+: стиль компонента продолжает влиять на другие компоненты ), упоминающие использование инкапсуляции: ViewEncapsulation Однако, просматривая сайт, я не вижу, чтобы это использовалось где-либо, однако есть css для разных компонентов, которые упоминают mat-form-field, но с разными значениями. Это похоже на то, что это означает, что инкапсуляция не нужна. В обычном HTML у меня не было таких проблем, но я запутался, как это работает в Angular. Это как-то связано с тем, что Angular является SPA?