2017-04-25 43 views
4

我正在嘗試使用ngbmodal創建通用確認框,這將在應用程序中使用。其中,標題和消息將從調用組件傳遞給模態。我創建了一個DialogService並添加到entryComponents中。現在我可以顯示確認框。但無法獲得結果。以下是顯示ConfirmationBox組件的代碼。如何獲得價值從它ngbModal作爲通用Confrimation Box

const modalRef = this.modalService.open(ConfirmationBoxComponent,{backdrop:"static"}) 
    modalRef.componentInstance.name = "Message"; 
    modalRef.componentInstance.confirmationBoxTitle = "Confirmation?" 
    modalRef.componentInstance.confirmationmessage = "Do you want to cancel?" 
    modalRef.componentInstance.changeRef.markForCheck(); 

回答

1

有實現這一目標的許多簡單的方法,但我會建議一個是最簡單和國際海事組織最有效的:解決模式的result承諾與用戶的選擇。這是因爲這樣做下面的組件代表模式的內容一樣簡單(注意activeModal.close(...)):

open() { 
    const modalRef = this.modalService.open(NgbdModalContent); 
    modalRef.componentInstance.confirmationBoxTitle = 'Confirmation?'; 
    modalRef.componentInstance.confirmationMessage = 'Do you want to cancel?'; 

    modalRef.result.then((userResponse) => { 
     console.log(`User's choice: ${userResponse}`) 
    });   
    } 

<button (click)="activeModal.close(true)">Yes</button> 
<button (click)="activeModal.close(false)">No</button> 

之後,您可以從NgbModalRef(通知modalRef.result.then)的result承諾找回用戶的回答

您可以在以下plunker中看到所有這些動作:http://plnkr.co/edit/yYIx1m1e2nfK0nxFwYLJ?p=preview

+0

感謝它爲我工作。 – Vairavan