2017-02-14 6 views
2

У меня есть диалог с да и без параметров (окно подтверждения). Я хочу подождать, пока пользователь не нажмет кнопку «Да» или «Нет» из диалогового окна, но прямо сейчас при нажатии кнопки, даже перед тем, как нажимать параметры в диалоговом окне, консольный журнал печатает начальную/пустую строку.MD Dialog Material Angular 2 wait for close

HTML:

<button (click)="foo()"></button> 

Компонент:

selectedOption = ''; 

foo() { 
    this.openDialog(); 
    console.log('selectedOption: ' + this.selectedOption); // Prints initial Value 
    // hit the API if selectedOption is yes. 
} 

openDialog() { 
    dialogRef.afterClosed().subscribe(result => { 
    this.selectedOption = result; 
    }); 
} 

ответ

1

Это связано с тем, как вы написали код и фактически afterClosed возвращает Наблюдаемые асинхронно. После вызова this.openDialog(); вы звоните console.log(....); На данный момент selectedOption еще пуст, потому что вы инициализирован его в верхней пустой строке.

Просто переместите console.log и апи логики на подписываться блока:

selectedOption = ''; 

foo() { 
    this.openDialog(); 
} 

openDialog() { 
    dialogRef.afterClosed().subscribe(result => { 
    this.selectedOption = result; 
    console.log('selectedOption: ' + this.selectedOption); // Prints 
    // hit the API if selectedOption is yes. 
    }); 
}