Вы можете обернуть модал в его собственный компонент.
my-modal.component.ts
import { Component, OnInit, Input } from '@angular/core';
import {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-my-modal',
templateUrl: './my-modal.component.html',
styleUrls: ['./my-modal.component.css']
})
export class MyModalComponent implements OnInit {
@Input() response: any;
constructor() { }
ngOnInit() {
}
}
my-modal.component. html
<div class="modal-header text-white" >
<div class="modal-title " id="modal-basic-title" >
<h4>Draft Selected Question</h4>
</div>
<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body p-0">
<p>q paper preview </p>
<p class="card-text">ID: {{ response.id }}</p>
<p class="card-text">Title: {{ response.title }}</p>
<p class="card-text">Value: {{ response.value }}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="activeModal.close('Close click')">Cancel</button>
</div>
Затем он может быть импортирован в родительский компонент и открыт в соответствии с требованием. В вашем случае допустимый ответ на запрос API.
Родительский компонент
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { MyModalComponent } from './my-modal/my-modal.component';
export class AppComponent implements OnInit {
constructor(private modalService: NgbModal) { }
ngOnInit() {
this._apiService.getDetails().subscribe(
response => {
this.openMyModal(response);
},
error => {
console.error('Unable to retrieve data from API: ', e);
}
);
}
openMyModal(response: any) {
const modalRef = this.modalService.open(MyModalComponent);
modalRef.componentInstance.response = response;
}
}
Затем вызовите функцию openMyModal()
, когда получите действительный ответ от запроса API.
Одним из преимуществ этого подхода, как и с любым другим компонентом, является то, что он позволяет открывать столько модалов, сколько вам нужно в родительском компоненте.