"角度"对话框参数



我想实现一个对话框,其中包含一些用于数据的API。在实现对话框之前,API由param id通过routerLink调用,但由于我选择了对话框,因此没有相同的param,因此我无法将id传递给API调用的对话框。

我试图通过dialog create函数传递id,但也没有按照要求工作。

HTML:

<button color="primary" matTooltip="Audit Order" (click)="onCreate(orders.orderId)" style="background-color:rgba(251, 230, 221, 1); border-radius: 5px;">
AUDIT
</button>

TS:

import { MatDialog, MatDialogConfig } from '@angular/material';
import { AuditPopupComponent } from '../audit-popup/audit-popup.component';
@Component({
selector: 'kt-audit',
templateUrl: './audit.component.html',
styleUrls: ['./audit.component.scss']
})
export class AuditComponent implements OnInit {
constructor(private dailog: MatDialog) {}
ngOnInit() {}
onCreate(orderId){
this.route.params.subscribe(params => {
this._Order.viewOrders(orderId).subscribe(res => {
this.orderDetails = res.data;
});
});
const dailogConfig = new MatDialogConfig();
// dailogConfig.disableClose = true;
dailogConfig.autoFocus = true;
dailogConfig.width = "50%";
this.dailog.open(AuditPopupComponent, dailogConfig);
}
}

子组件TS:

ngOnInit() {
this.route.params.subscribe(params => {
this.ps.viewOrders(params['id']).subscribe(res => {
this.ordersView = res.data;
});
});
}

这可能不是解决方案的提示,但由于较大项目的维护问题,请尽量避免嵌套订阅。

而且你还必须担心破坏订阅,只要你没有在角度服务中使用它们

您只需要通过对话框选项将数据传递到对话框:

TS:

import { MatDialog, MatDialogConfig } from '@angular/material';
import { AuditPopupComponent } from '../audit-popup/audit-popup.component';
@Component({
selector: 'kt-audit',
templateUrl: './audit.component.html',
styleUrls: ['./audit.component.scss']
})
export class AuditComponent implements OnInit {
constructor(private dailog: MatDialog) {}
ngOnInit() {}
onCreate(orderId){
this.route.params.subscribe(params => {
this._Order.viewOrders(orderId).subscribe(res => {
this.dailog.open(AuditPopupComponent, {
autoFocus: true,
width: "50%",
data: res.data
});
});
});
}
}

对话框:

import { MAT_DIALOG_DATA } from '@angular/material';
import { Inject } from '@angular/core';
@Component({
selector: 'dialog-data-example-dialog',
templateUrl: 'dialog-data-example-dialog.html',
})
export class DialogDataExampleDialog {
constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData) {}
ngOnInit() {
this.ordersView = this.data;
}
}

最新更新