首页 > 解决方案 > 如何在 Angular 7 中为模式对话框创建路由?

问题描述

如何为现有的模式对话框创建路由?我希望能够输入模态 URL,当我按下回车键时,应该会显示模态对话框。此外,选择后退按钮应将用户带到上一条路线。

我已经为新建和创建的模式对话框尝试了以下创建路由:

当用户点击一个按钮时,该按钮将路由更改为:`

onPostEdit(){    
    this.router.navigate([`${this.post.postID}/edit`], {relativeTo: this.route})
    //this.postItDialogService.openPostItDialogEdit(this.dialog, this.post);
  }

` 然后我的路由设置如下:

`
{ path: 'posts/new',  component: PostItDialogContainerComponent },
  { path: 'posts/:id/edit', component: PostItDialogContainerComponent},
`

PostItDialogContainerComponent 是这样的:

`
ngOnInit() {
    this.postItDialog.openPostItDialog(this.dialog);
  }
`

openPostItDialog 是这样的:

`
public openPostItDialog(dialog: MatDialog): void {
    const dialogRef = dialog.open(PostItDialog, {
      width: '350px'
    });
    console.log("Dialog was open");

    dialogRef.afterClosed().subscribe(() => {
      console.log("The dialog was closed");
    })
`

然后,当显示对话框时,我想检查参数并根据参数显示新表单或现有表单(如果它是编辑路线)

`
ngOnInit() {   
    this.route.params
      .subscribe(
        (params) => {
          this.postID = +params['id'];
          this.editMode = params['id'] != null;
          this.initForm();
        }
      );
}
`

我已经在这里待了一天。我想不明白。通过手动更改 URL,然后在对话框关闭时清除 URL,我有一个 hacky 方法。这仅适用于一个用例,一个新的表单,但是当我想重新使用它来编辑帖子时。我究竟做错了什么?

标签: angular

解决方案


推荐阅读