2017-10-20 25 views
2

다음 대화 상자 구성 요소가 있습니다 (다른 구성 요소에서 dialog.open (MyDialogComponent)를 사용하여 엽니 다).각도 재료 대화 상자 반환 값

export class MyDialogComponent implements OnInit { 
    constructor(public matDialogRef: MatDialogRef<MyDialogComponent>) {} 

    ngOnInit() {} 
} 

나는 내가 대화 상자 구성 요소의 버튼에 바인딩 matDialogRef.close (dataToReturn)을 실행하여 호출 구성 요소에 데이터를 반환 할 수 있습니다 알고 있습니다. 그러나 사용자가 다른 곳을 클릭했지만 팝업을 닫으면 데이터를 어떻게 반환 할 수 있습니까?

답변

4

누군가가 관심이 있다면 해결책을 찾았습니다 (가장 좋은 것인지 확실하지 않음). 백그라운드 클릭에서 데이터 매개 변수를 사용하여 팝업을 닫으면서 팝업이 닫히지 않도록 기본 닫기 작업을 비활성화하면됩니다.

matDialogRef.disableClose = true;//disable default close operation 
matDialogRef.backdropClick().subscribe(result => { 
    matDialogRef.close(dataToReturn); 
}); 

이렇게하면 호출 구성 요소가 대화 상자가 버튼으로 닫혔는지 또는 다른 곳에서 클릭되었는지 여부에 관계없이 데이터를 수신합니다.

+0

'esc'키를 처리하려면 키보드 이벤트에 가입해야합니다. 소스 코드를 탐색했는데 실제로이 작업을 수행하는 더 좋은 방법은 없습니다. 다행히도 배경 클릭과'esc' keydown 이벤트는 동일한 기능을 수행하기 위해 다시 구현해야하는 유일한 두 가지입니다. –