Cod*_*ard 1 typescript bootstrap-modal ng-bootstrap angular
我有一个Angular 6应用,我正在尝试实现从屏幕右侧滑入的模态窗口,如下所示:https : //codepen.io/anon/pen/OayRVy
但是,无论我做什么尝试,都无法覆盖模式窗口的位置。我唯一能够更改的是标题/正文的背景颜色。
我的模式HTML:
<ng-template #content let-modal="close">
<div class="modal-header">
<h4 class="modal-title" id="modal-basic-title">Table of Contents</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" (click)="dismissModal(modal)"><span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<p>
....
</p>
</div>
</ng-template>
Run Code Online (Sandbox Code Playgroud)
组件代码:
import {NgbModal} from '@ng-bootstrap/ng-bootstrap';
constructor(private modalService: NgbModal) {}
public open(content) {
this.modalService.open(content, {ariaLabelledBy: 'modal-basic-title', size: 'lg'}).result.then((result) => {
...
}, (reason) => {
...
});
}
Run Code Online (Sandbox Code Playgroud)
如果我检查HTML并在Chrome DevTools中将float: right属性添加到.modal-dialog容器,它将完成我想要的操作。但是,添加一个
.modal-dialog {
float: right;
}
Run Code Online (Sandbox Code Playgroud)
到我的.scss文件中对该组件无效。
谁能告诉我如何覆盖默认的引导程序样式,以便我可以强制其显示在屏幕的右侧并占据其高度的100%?
我曾尝试使用该window.class: 'custom-class'属性,但它不起作用。我会添加自定义类声明,模态看起来完全一样。
解决方案来自https://ng-bootstrap.github.io/#/components/modal/examples ,我最初是在它之后为我的模态建模的。
他们在这里的关键代码段,他们没有解释为什么需要它或它做什么所以我仍然不完全确定自己,是 encapsulation: ViewEncapsulation.None
将该行与自定义类一起添加到我的 @Component 声明后,所有样式都起作用了。
windowClass从使用NgbModalOptions
this.modalService.open(
content,
{
ariaLabelledBy: 'modal-basic-title',
size: 'lg',
windowClass: 'custom-class'
}
)
.result
.then((result) => {
// write your code here
});
Run Code Online (Sandbox Code Playgroud)
在scss中:
.custom-class {
float: right;
}
Run Code Online (Sandbox Code Playgroud)
如果您只需要修改模态中的现有类,例如.modal-content,您可以这样做:
::ng-deep .modal-content {
background-color: yellow;
}
Run Code Online (Sandbox Code Playgroud)
如果你想使用自己的 CSS 类,这里有一个更复杂的例子:
::ng-deep .my-class {
font-size: 2rem;
.modal-dialog {
background-color: yellow;
padding:1rem;
}
.modal-content {
color: white;
}
.modal-header {
background-color: red;
}
.modal-body {
background-color: green;
}
}
Run Code Online (Sandbox Code Playgroud)
并在 *.ts 文件中:
this.modalService.open(content, { windowClass: 'my-class'})
Run Code Online (Sandbox Code Playgroud)
请注意,如果您正在开发一个大型应用程序,您不想使用::ng-deep它,因为它会使 CSS 规则成为全局的(而且,它已被弃用)。你可以把.my-class在styles.scss或其他地方,每一个开发者都知道,“这里所有的规则是全球性的。” 这样你也可以有.my-class-2一个不同的模式。
| 归档时间: |
|
| 查看次数: |
4946 次 |
| 最近记录: |