如何在Angular 7中为模式对话框创建路由?

时间:2019-03-25 18:36:14

标签: angular

如何为现有的模式对话框创建路由?我希望能够输入模式URL,当我按Enter键时,应该显示模式对话框。同样,选择“后退”按钮也应将用户带到上一条路线。

我已尝试为new和create的模式对话框进行以下创建路由:

当用户单击按钮时,该按钮会将路线更改为: `

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,我有一种骇人听闻的方法。这仅适用于一个用例,适用于新的表单,但是当我想再次使用它来编辑帖子时也是如此。我在做什么错了?

0 个答案:

没有答案