【发布时间】:2020-07-17 17:16:23
【问题描述】:
我正在使用 Angular 8 和 ng-boostrap 5.2.2。 我想要一个可重用的模态组件:
-
当点击模态中的图像时,关闭它并返回图像的值
-
能够从父组件调用打开的模态函数,我可以在我想要的元素上执行(onclick)
我可以从子组件而不是父组件执行此操作。
到目前为止我做了什么:
champion-modal-component.html(孩子)
<ng-template #mymodal let-modal>
<div class="modal-header">
<h4 class="modal-title" id="modal-basic-title">Bootstrap Modal</h4>
<button type="button" class="close" aria-label="Close" (click)="modal.close('Cross click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="selected">
<img (click)="getSelectedChampion('aatrox')" class="selected-image" src="../../../../../assets/champions/aatrox.png" alt="aatrox" title="aatrox">
<img (click)="getSelectedChampion('ahri')" class="selected-image" src="../../../../../assets/champions/ahri.png" alt="ahri" title="ahri">
<img (click)="getSelectedChampion('akali')" class="selected-image" src="../../../../../assets/champions/akali.png" alt="akali" title="akali">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-dark" (click)="modal.close('Close click')">
Close
</button>
</div>
</ng-template>
<button class="btn btn-lg btn-primary" (click)="open(mymodal)">
Open My Modal
</button>
champion-modal-component.ts(孩子)
import { Component, OnInit, Input } from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-champion-modal',
templateUrl: './champion-modal.component.html',
styleUrls: ['./champion-modal.component.scss']
})
export class ChampionModalComponent implements OnInit {
championSelected = '';
constructor(private modalService: NgbModal) { }
ngOnInit() {
}
open(content: any) {
this.modalService.open(content, { ariaLabelledBy: 'modal-basic-title' });
}
getSelectedChampion(champion: string) {
console.log('champion: ', champion);
this.modalService.dismissAll();
this.championSelected = champion;
}
}
champion-suggestion-component.html(父)
<!-- I WOULD LIKE THIS and not use a button in the child -->
<img (click)="openModal()" class="suggestion-image"
src="../../../../../assets/champions/aatrox.png" alt="aatrox" title="aatrox">
<app-champion-modal></app-champion-modal>
这对于模态服务或 EventEmitter 是否可行?
【问题讨论】:
标签: angular modal-dialog ng-bootstrap