2017-10-22 34 views
0

モーダルを表示するときに角2材のダイアログコンポーネントを使用しています。ベースのモーダル(MatModalComponent)とng-contentを作成し、ベースのngコンテンツに含まれるカスタマイズされた子モーダル(ReserveSeatModalComponent)を作成しました。角2材質:動的カスタムダイアログ

ダイアログ呼び出しを1つのサービスにリファクタリングしようとしています。だから毎回これを書く必要から、ダイアログが表示されます:

 let dialogRef = this.dialog.open(ReserveSeatModalComponent, { 
      width: '250px', 
      data: { 
       seat: this.selectedSeat 
      } 
     }); 

これで、サービス内でopen()メソッドを呼び出すことができます。私はこれをどのように実装するのか分かりません。私はTarik's implementationで始まりましたが、dialogRefによって使用されるように、子モーダルコンポーネントをサービスにどのように渡すのかがブロックされています。

答えて

0

ちょうどこれのために私のコードが働いています。

this.modalService 
     .invoke(VacateSeatModalComponent, 
     { 
      selectedSeat: this.selectedSeat, 
      seatingInfo: seatInfo 
     }) 
     .subscribe(result => { 
      if (result) 
       this.vacateSeat(); 
     }); 
:私はこのようなサービスを呼び出す

export class ModalService { 

    constructor(private dialog: MatDialog) { } 

    public invoke(modalComponent: any, modalData: any): Observable<any> { 
     let dialogRef = this.dialog.open(modalComponent, { 
      width: '250px', 
      data: modalData 
     }); 

     return dialogRef.afterClosed(); 
    } 
} 

:ここ

は私のモーダルサービスです