【发布时间】:2020-08-28 10:06:29
【问题描述】:
我想知道是否有办法阻止 Angular 子组件继承父样式,主要是不透明度。
我有一个位于页面顶部的表单包装器,如下所示:
import {Component, EventEmitter, Output} from "@angular/core";
@Component({
selector: 'new-student-form-wrapper',
templateUrl: './new-student-form-wrapper.component.html',
styleUrls: ['./new-student-form-wrapper.component.scss']
})
export class NewStudentFormWrapperComponent {
@Output() public onNewStudentFormClose: EventEmitter<void> = new EventEmitter<void>();
public newStudentFormCloseClicked(): void {
this.onNewStudentFormClose.emit();
}
}
::ng-deep {
.student-details-form {
opacity: 0;
}
}
.new-student-form-wrapper {
z-index: 50;
height: 100vh;
width: 100vw;
position: absolute;
background-color: white;
opacity: 0.8;
.c-pointer {
cursor: pointer;
}
}
<div class="new-student-form-wrapper p-4">
<mdb-icon class="c-pointer d-flex close-icon" (click)="newStudentFormCloseClicked()" fas icon="times"></mdb-icon>
<new-student-form></new-student-form>
</div>
使用实际包含表单行为的子组件:
import {Component} from "@angular/core";
@Component({
selector: 'new-student-form',
templateUrl: './new-student-form.component.html',
styleUrls: ['./new-student-form.component.scss']
})
export class NewStudentFormComponent {
}
.student-details-form {
opacity: 1;
background-color: purple; /** Just to test opacity*/
}
<div class="student-details-form md-form input-group d-flex flex-column">
<div class="form-header">
<h1>Hello</h1>
</div>
</div>
然而,尽管实际上明确声明 new-student-form.component 的不透明度为 0,但它仍然采用容器的 0.8 不透明度规则。
我肯定使用 ng-deep 错误,为孩子消除不透明度的最佳方法是什么?有没有我可以用来阻止样式泄漏到另一个组件中的封装规则?
【问题讨论】:
标签: javascript html css angular