Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击“保存”时,“角度材质”对话框传递动态功能_Javascript_Angular_Angular Material - Fatal编程技术网

Javascript 单击“保存”时,“角度材质”对话框传递动态功能

Javascript 单击“保存”时,“角度材质”对话框传递动态功能,javascript,angular,angular-material,Javascript,Angular,Angular Material,dialog.ts export class DialogComponent { constructor(private service: RestService, private dialogRef: MatDialogRef<DialogComponent>) { } no() { this.dialogRef.close(); } save() { const url = 'https://gorest

dialog.ts

export class DialogComponent {
    constructor(private service: RestService, private dialogRef: MatDialogRef<DialogComponent>) {
    }

    no() {
        this.dialogRef.close();
    }

    save() {
        const url = 'https://gorest.co.in/public-api/users'; 
        const options = {headers: HttpHeaders, params: HttpParams};

        const getResp: any = this.service.Get(url, options);       
        this.dialogRef.close();

    ///THIS save() FUNCTION HARDCODED, BUT I WANT TO MAKE RESTCALL DYNAMICALLY WHEN ANYONE CLICKS SAVE BUTTON IN DIALOG
    }

}
 getUsers() {

    const dialogConfig = new MatDialogConfig();

    const dialogRef = this.dialog.open(DialogComponent,
        dialogConfig, passSomeRestCall-1-FunctionSomehow());  
  }
 getEmployees() {

    const dialogConfig = new MatDialogConfig();

    const dialogRef = this.dialog.open(DialogComponent,
        dialogConfig, passSomeRestCall-2-FunctionSomehow());  
  }
组件2.ts

export class DialogComponent {
    constructor(private service: RestService, private dialogRef: MatDialogRef<DialogComponent>) {
    }

    no() {
        this.dialogRef.close();
    }

    save() {
        const url = 'https://gorest.co.in/public-api/users'; 
        const options = {headers: HttpHeaders, params: HttpParams};

        const getResp: any = this.service.Get(url, options);       
        this.dialogRef.close();

    ///THIS save() FUNCTION HARDCODED, BUT I WANT TO MAKE RESTCALL DYNAMICALLY WHEN ANYONE CLICKS SAVE BUTTON IN DIALOG
    }

}
 getUsers() {

    const dialogConfig = new MatDialogConfig();

    const dialogRef = this.dialog.open(DialogComponent,
        dialogConfig, passSomeRestCall-1-FunctionSomehow());  
  }
 getEmployees() {

    const dialogConfig = new MatDialogConfig();

    const dialogRef = this.dialog.open(DialogComponent,
        dialogConfig, passSomeRestCall-2-FunctionSomehow());  
  }
以上两个组件必须动态地使用Dialog组件,当前上面的save()硬编码有一些restcall,但实际上,当单击上面两个组件的save()时,需要rest调用。因此,简而言之,save()按钮应该基于组件进行动态restcall

有谁能在上面帮我一下吗,我是个新手

编辑:

 for (let i = 0; i < this.items.length; i++) {
      this.service.makeRestCall(this.items[i]);
    }

您可以将url、选项等作为数据在对话框组件中传递,并在下面的保存功能中传递

用户组件

 openDialog(): void {
    let ApiDetails = {
      url: 'https://gorest.co.in/public-api/users'
    }
    const dialogRef = this.dialog.open(DialogComponent,
      {
        data: ApiDetails
      });
  }
对话框组件

export class DialogComponent implements OnInit {

  constructor(
    private dialogRef: MatDialogRef<DialogComponent>,
    @Inject(MAT_DIALOG_DATA) public data: any) {
  }

  no(){
    this.dialogRef.close()
  }

  save(){
    console.log(this.data) // this will have url and other details whatever you send from calling parent
  }

}
导出类DialogComponent实现OnInit{
建造师(
私有dialogRef:MatDialogRef,
@注入(MAT_对话框_数据)公共数据:任意){
}
否(){
this.dialogRef.close()
}
保存(){
console.log(this.data)//这将包含url和您从调用父级发送的任何其他详细信息
}
}

您不需要传递回调方法。它应该是莫代尔父母的一部分。 您只需要将@Output设置为EventEmitter类型的模式。比如:

@Output() save: EventEmitter<boolean>;
父级将侦听此@Output并正确处理它

dialogRef.componentInstance.save$.subscribe((res) => {
    // Here is your business logic 
  }
);
因此: 1) 如果处理后一切正常,则可以在父级中使用dialogRef并关闭模式(dialogRef.close())。 2) 如果出现问题,modal将不会关闭


使用这种方式,我们的模式将不受业务逻辑的影响。对于一般模态尤其重要,如确认、用户输入等,

有人可以查看上面的内容吗?使用切换语句?@docholiday抱歉,我没听清楚,请理解我的查询。我应该能够在一些对话框组件中传递一些业务逻辑,知道吗?仍在寻找答案。仍在寻找答案…..嗨,我刚刚在上面的查询中添加了一些内容,请您检查一下,我的问题是:如何在对话框组件中传递循环逻辑?