我是棱角分明的新手,我正在通过建筑学习。
我需要以编程方式使用不同的HTML内容打开模式。
我已经引用了这个example中描述的第一个stackblitz issue并创建了一个ModalComponent(带有选择器<app-modal>
),这样我就可以在我的应用程序中的任何位置创建模态。
现在,我在我的页面中使用<ng-template>
中不同html内容的此组件。
单击主页面中的按钮可以打开模态,但模态中的关闭和关闭按钮不起作用。
我试图在这里做一个最小的例子:https://stackblitz.com/edit/angular-j1u4fo
任何帮助将不胜感激。谢谢。
试试这个
我用let-c =“close”和let-d =“dismiss”创建了模态的全局配置
app.component.html
<div class="container-fluid">
<p>Welcome to {{ name }}</p>
<button type="button" (click)="openModal()">Click to open Modal</button>
<!-- Example 1: Passing TemplateRef as custom component -->
<ng-template #modal1 let-c="close" let-d="dismiss">
<app-modal [title]="'Title'" [c]="c" [d]="d">
<img src="https://angular.io/assets/images/logos/angular/angular.png" height="100px" width="100px">
</app-modal>
</ng-template>
</div>
modal.component.html
<div class="modal-header">
<h4 class="modal-title">{{title}}</h4>
<button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<ng-content></ng-content>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" (click)="c('Close click')">Cancel</button>
</div>
modal.component.ts
import { Component, Input, OnInit } from '@angular/core';
import {NgbModal, NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.css']
})
export class ModalComponent implements OnInit {
@Input() title = `Information`;
@Input() c;
@Input() d;
constructor(
public activeModal: NgbActiveModal
) {}
ngOnInit() {
}
}
在你打电话给this.m1
时用ModalComponent
取代openModal
。
根据API documentation,NgbActiveModal仅在您传入组件而不是模板时才有效。
如果将组件类型作为内容传递,则可以使用NgbActiveModal类的实例注入这些组件的实例。然后,您可以使用NgbActiveModal方法从组件的“内部”关闭/关闭模态。