我有一个用于调用者的Angular Material Dialog.Code代码片段: 在模板中:
<ag-grid-angular
...
(cellClicked)='onGridCellClicked($event)'>
</ag-grid-angular>
在组件中:
onGridCellClicked(event) {
if (event.colDef.field == 'name') {
this.showSurveyDetails(event.data);
}
}
showSurveyDetails(data) {
const dialogData = data;
this.dialog.open(SurveyDetailsDialogComponent, { width: '80vw', data: dialogData });
}
此处的对话框是MatDialog。现在将其变成常规组件,我将代码this.dialog.open替换为
this.router.navigate(['getSurveySummary',{dialogData:dialogData}]);
其中路由器是ActivatedRoute。现在的问题是找不到路线。 路由在app.routing.ts中定义为:
{ path: SurveyRoutes.SURVEY_SUMMARY, component: SurveyDetailsDialogComponent, canActivate: [ValidateLogin] }
SURVEY_SUMMARY在app.routing.constants.ts中定义为:
SURVEY_SUMMARY = 'getSurveySummary'
错误消息是:
ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'getSurveySummary;dialogData=%5Bobject%20Object%5D'
错误:无法匹配任何路由。 URL段:'getSurveySummary; dialogData =%5Bobject%20Object%5D' 在ApplyRedirects.push ../ node_modules/@angular/router/fesm5/router.js.ApplyRedirects.noMatchError(vendor.js:132813)
如果在对话框中失败,那将是另一回事,但是在路由自身时却失败了。如何定义路线以使流程成功?