[Angular Material] 共用的dialog如何抓取識別是從那邊開啟的dialog

就是做了點按鈕會呼叫aaa function跳出AAA Dialog的Component

AAA這個Dialog算是共用的內容
所以網頁上會有很多呼叫aaa()的按鈕

現在目標是
該如何識別是從網頁上的哪個按鈕所呼叫的aaa()

因為有需求將AAA dialog的內容帶回對應的按鈕附近的formcontrol欄位



有想過讓aaa()帶一個是別的參數 舉例叫做aaa001 預計會來要寫入English001的formgroupname欄位中 於是變成aaa(aaa001) 帶回來後再切割aaa001這字串取出001 再湊出English001這串字當變數 再set Dialog的 value 到剛剛裡面

這樣會不會太天馬行空了 :rofl:


有在猜說是不是要用afterOpened
或是getId 的方法
但是不太知道怎樣寫


再請各位前輩分享比較不必這樣走冤枉路的正確寫法

你都呼叫 function 了,就將物件識別或是變數傳進去就可以了。沒那麼複雜

1個讚

的確是想太多了 哈哈
直接在this.dialogRef.close()
裡面塞值就好

解決方式

頁面html

 (click)="aaa('aaa001')"

頁面ts

aaa(DialogCorrespondId) {
    let CodeResult: string;
    const dialogRef = this.dialog.open(AAADialogComponent, {
      width: '80%',
      disableClose: true,
      data: {
        CodeBtnId: DialogCorrespondId,
       CodeDialogResult: CodeResult,
      },
    });

    dialogRef.afterClosed().subscribe(result => {
      this.formDataService.serviceFormGroup
        .get(DialogCorrespondId)
        .setValue(result);
    });
  }

Dialog html

 <button (click)="setCodeResultToForm()">
      將結果填入欄位
    </button>

Dialog ts

  setCodeResultToForm() {
    this.dialogRef.close(this.findCodeForm.controls['CodeResult'].value);
  }