显示通过参数传递的组件
Showing component passed by parameter
我想创建一个组件,该组件接收另一个组件作为参数并将其包装在 NgBootstrap 模态中,但添加了一些 html 元素。
我不知道这是否可行,我想这样做的主要原因是将页眉和页脚添加到具有相同功能(如关闭按钮、接受和取消)的模式,并且唯一改变的是是正文,它应该显示作为参数传递的组件。
知道如何解决这个问题吗?
你应该使用 <ng-content>
下面的示例是模态通用模板,其中 modalTitle
是参数
html
<!-- modal header -->
<div class="modal-header">
<h4 class="modal-title">{{modalTitle}}</h4>
<button type="button" class="close" aria-label="Close" (click)="closeModal()">
<span aria-hidden="true">×</span>
</button>
</div>
<!-- modal body -->
<div class="modal-body">
<ng-content></ng-content>
</div>
<!-- modal footer -->
<div class="modal-footer"></div>
</div>
</div>
控制器
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss']
})
export class ModalComponent implements OnInit {
@Input() modalTitle: string;
constructor(private activeModal: NgbActiveModal) {
}
ngOnInit() {
}
closeModal() {
this.activeModal.close();
}
}
所以当你想动态使用你的模式时,你应该将上面的代码包装在一个组件中并且 "extend it" 像这样
<app-modal modalTitle="this is my title">
<!-- start of dynamic content-->
<div>
<h2>This is my dynamic content</h2>
<p>I'am extending modal template...</p>
</div>
<!-- end of dynamic content -->
<app-modal>
我想创建一个组件,该组件接收另一个组件作为参数并将其包装在 NgBootstrap 模态中,但添加了一些 html 元素。
我不知道这是否可行,我想这样做的主要原因是将页眉和页脚添加到具有相同功能(如关闭按钮、接受和取消)的模式,并且唯一改变的是是正文,它应该显示作为参数传递的组件。
知道如何解决这个问题吗?
你应该使用 <ng-content>
下面的示例是模态通用模板,其中 modalTitle
是参数
html
<!-- modal header -->
<div class="modal-header">
<h4 class="modal-title">{{modalTitle}}</h4>
<button type="button" class="close" aria-label="Close" (click)="closeModal()">
<span aria-hidden="true">×</span>
</button>
</div>
<!-- modal body -->
<div class="modal-body">
<ng-content></ng-content>
</div>
<!-- modal footer -->
<div class="modal-footer"></div>
</div>
</div>
控制器
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss']
})
export class ModalComponent implements OnInit {
@Input() modalTitle: string;
constructor(private activeModal: NgbActiveModal) {
}
ngOnInit() {
}
closeModal() {
this.activeModal.close();
}
}
所以当你想动态使用你的模式时,你应该将上面的代码包装在一个组件中并且 "extend it" 像这样
<app-modal modalTitle="this is my title">
<!-- start of dynamic content-->
<div>
<h2>This is my dynamic content</h2>
<p>I'am extending modal template...</p>
</div>
<!-- end of dynamic content -->
<app-modal>