使用 ngx-bootstrap modalService 时添加自定义 class 的方法
Way to add custom class when using ngx-bootstrap modalService
在此处查找 ngx-bootstrap source code 时:
有一个可选的 class property
定义为 class?: string;
。
使用方法是什么?
是否可以添加自定义 class,例如:
this.modalService.config.class = 'myClass';
使用服务之前:
this.modalRef = this.modalService.show(template, {
animated: false
});
这样,我想我们可以将自定义 CSS 添加到显示的模态
我尝试添加自定义 class 但没有成功。
那个class属性不是数组,如果适用,是不是意味着我们只能加一个自定义的class?
演示: 通过添加和覆盖 modal
class,模态不显示
https://stackblitz.com/edit/ngx-bootstrap-3auk5l?file=app%2Fapp.component.ts
以这种方式添加 modal
class 没有帮助:
this.modalRef = this.modalService.show(template, Object.assign({},
this.config, { class: 'gray modal-lg modal' }));
https://stackblitz.com/edit/ngx-bootstrap-awmkrc?file=app%2Fapp.component.ts
根据ngx-bootstrap documentation关于Modal组件(参见组件标签),可以添加一个class
配置对象的成员。
重要:由于模态元素在呈现的组件元素之外HTML,应该关闭组件的CSS封装,或者 class 的样式属性应该在另一个文件中指定,以确保样式应用于模态元素。
下面的代码片段可以在this stackblitz中执行。
import { Component, TemplateRef, ViewEncapsulation } from '@angular/core';
import { BsModalService, BsModalRef } from 'ngx-bootstrap';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
encapsulation: ViewEncapsulation.None
})
export class AppComponent {
modalRef: BsModalRef;
config = {
animated: true,
keyboard: true,
backdrop: true,
ignoreBackdropClick: false,
class: "my-modal"
};
constructor(private modalService: BsModalService) { }
openModal(template: TemplateRef<any>) {
this.modalRef = this.modalService.show(template, this.config);
}
}
使用这样的 CSS 文件:
.my-modal {
border: solid 4px blue;
}
.my-modal .modal-header {
background-color: lime;
}
.my-modal .modal-body {
background-color: orange;
}
更新:此other stackblitz 显示了从外部文件导入styles.css
的CSS 样式示例,允许保留CSS组件中的封装。
在此处查找 ngx-bootstrap source code 时:
有一个可选的 class property
定义为 class?: string;
。
使用方法是什么?
是否可以添加自定义 class,例如:
this.modalService.config.class = 'myClass';
使用服务之前:
this.modalRef = this.modalService.show(template, {
animated: false
});
这样,我想我们可以将自定义 CSS 添加到显示的模态
我尝试添加自定义 class 但没有成功。
那个class属性不是数组,如果适用,是不是意味着我们只能加一个自定义的class?
演示: 通过添加和覆盖 modal
class,模态不显示
https://stackblitz.com/edit/ngx-bootstrap-3auk5l?file=app%2Fapp.component.ts
以这种方式添加 modal
class 没有帮助:
this.modalRef = this.modalService.show(template, Object.assign({},
this.config, { class: 'gray modal-lg modal' }));
https://stackblitz.com/edit/ngx-bootstrap-awmkrc?file=app%2Fapp.component.ts
根据ngx-bootstrap documentation关于Modal组件(参见组件标签),可以添加一个class
配置对象的成员。
重要:由于模态元素在呈现的组件元素之外HTML,应该关闭组件的CSS封装,或者 class 的样式属性应该在另一个文件中指定,以确保样式应用于模态元素。
下面的代码片段可以在this stackblitz中执行。
import { Component, TemplateRef, ViewEncapsulation } from '@angular/core';
import { BsModalService, BsModalRef } from 'ngx-bootstrap';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
encapsulation: ViewEncapsulation.None
})
export class AppComponent {
modalRef: BsModalRef;
config = {
animated: true,
keyboard: true,
backdrop: true,
ignoreBackdropClick: false,
class: "my-modal"
};
constructor(private modalService: BsModalService) { }
openModal(template: TemplateRef<any>) {
this.modalRef = this.modalService.show(template, this.config);
}
}
使用这样的 CSS 文件:
.my-modal {
border: solid 4px blue;
}
.my-modal .modal-header {
background-color: lime;
}
.my-modal .modal-body {
background-color: orange;
}
更新:此other stackblitz 显示了从外部文件导入styles.css
的CSS 样式示例,允许保留CSS组件中的封装。