ボタンをクリックすると、Promiseで次々と呼び出される3つの関数があります。最初の関数では、約束を返すブロックされたモデルウィンドウが必要であり、その約束で次の関数を解決します。
HTMLコードは次のとおりです。
<div>
<h2>Hello {{name}}</h2>
<button (click)="OnAgeAYear()">click me</button>
<div bsModal #getRichModal="bs-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" aria-label="Close" (click)="hideChildModal()">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Child modal</h4>
</div>
<div class="modal-body">
getRich quick
</div>
<button type="button" class="btn btn-primary" (click)="confirmGetRichYes()" >YES</button>
<button type="button" class="btn btn-primary" (click)="confirmGetRichNo()" >NO</button>
</div>
</div>
</div>
</div>
ボタンクリック機能:
OnAgeAYear() {
//this.getRichModal.show();
this.fateGetRichQuick()
.then(
result=>{
console.log("promise returned: " + result);
return this.fateCharity();
},
error=> console.log(error))
.then(
result=>{
console.log("promise returned: " + result);
return this.fateMarriage();
}).then(
result=>{
console.log("promise returned: " + result);
return this.fateMarriage();
}
)
.catch(error => {
console.log("generic cach "+error); // will be called if getUser or getRights fails
})}
3つの機能は次のとおりです。
fateGetRichQuick(): Promise<any>{
var modal = this.getRichModal;
return new Promise<any>(function (resolve, reject) {
var n= 1;
modal.show();
// I want to resolve this promise only when user clicked yes or no.
});}
fateCharity(): Promise<any> {
return new Promise<any>(function (resolve, reject) {
resolve("fateCharity-Resolve");
})}
fateMarriage(): Promise<any> {
return new Promise<any>(function (resolve, reject) {
resolve("fateMarriage - Resolve");
})}
モーダルウィンドウには次の機能があります。
confirmGetRichYes(): Promise <boolean>{
alert("it is yes....");
this.hideChildModal();
return Promise.resolve(true);}
confirmGetRichNo(): Promise <boolean>{
alert("it is no....");
this.hideChildModal();
return Promise.resolve(false);}
hideChildModal(){
this.getRichModal.hide();}
したがって、confirmGetRichYesでfateGetRichQuickの約束を解決したいのですが、モーダルウィンドウは関数fateGetRichQuickをブロックせず、そのフローを続行します。
plunker でコードを実行しています: http://plnkr.co/edit/nX1LcNJeuQvuWSloF50l