Javascript 单击“保存”时,“角度材质”对话框传递动态功能
dialog.tsJavascript 单击“保存”时,“角度材质”对话框传递动态功能,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
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抱歉,我没听清楚,请理解我的查询。我应该能够在一些对话框组件中传递一些业务逻辑,知道吗?仍在寻找答案。仍在寻找答案…..嗨,我刚刚在上面的查询中添加了一些内容,请您检查一下,我的问题是:如何在对话框组件中传递循环逻辑?