还是新角2,并试图找出如何最好地重复使用弹出窗口。我发现这非常方便的弹出窗口不同的问题上SO (Angular 2.0 and Modal Dialog)角2 - 制作可重复使用弹出窗口
@Component({
selector: 'app-component',
template: `
<button type="button" (click)="modal.show()">test</button>
<app-modal>
<div class="app-modal-header">
header
</div>
<div class="app-modal-body">
Whatever content you like, form fields, anything
</div>
<div class="app-modal-footer">
<button type="button" class="btn btn-default" (click)="modal.hide()">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</app-modal>
`
})
export class AppComponent {
@ViewChild(ModalComponent)
public readonly modal: ModalComponent;
}
@Component({
selector: 'app-modal',
template: `
<div (click)="onContainerClicked($event)" class="modal fade" tabindex="-1" [ngClass]="{'in': visibleAnimate}"
[ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<ng-content select=".app-modal-header"></ng-content>
</div>
<div class="modal-body">
<ng-content select=".app-modal-body"></ng-content>
</div>
<div class="modal-footer">
<ng-content select=".app-modal-footer"></ng-content>
</div>
</div>
</div>
</div>
`
})
export class ModalComponent {
public visible = false;
private visibleAnimate = false;
public show(): void {
this.visible = true;
setTimeout(() => this.visibleAnimate = true, 100);
}
public hide(): void {
this.visibleAnimate = false;
setTimeout(() => this.visible = false, 300);
}
public onContainerClicked(event: MouseEvent): void {
if ((<HTMLElement>event.target).classList.contains('modal')) {
this.hide();
}
}
}
我想提出一个将在有多个弹出窗口的应用程序。我很想把这个简单的HTML模板,并插入取决于我想要的弹出不同的子组件。即替换弹出div;
<div class="modal-dialog">
<div class="modal-content">
<my-custom-component></my-custom-component>
</div>
</div>
有没有办法'传入'我的自定义组件?或者我将不得不复制弹出式HTML的每种类型的弹出我想要的?
想我的代码示例中已经有这个内置的,只是不知道它的存在/它是什么!谢谢 :) – will