Angular router.navigate在MatDialog中不起作用

时间:2018-10-01 12:26:42

标签: angular angular-material angular6

我有NewCategoryComponent,它具有获取详细信息的表单,以及WarningComponent,它将在用户关闭表单时显示。

单击关闭(x)图标时,用户将收到警告消息(Mat Dialog),“ 确定要关闭吗?”。然后,用户应转到上一条路线。

如果我当前的路线是category/101/newCategory,则应该转到category/101。我已经实现了this.router.navigate(['../'], { relativeTo: this.activatedRoute });

问题

如果我将this.router.navigate(['../'], { relativeTo: this.activatedRoute });保留在WarningComponent中,它将转到/(根)位置。 在NewCategoryComponent中,它工作得很好。

代码

NewCategoryComponent

// new-category.component.html
<button mat-icon-button class="cancelBtn" (click)="showWarning()">
    <mat-icon>close</mat-icon>
</button>


// new-category.component.ts
showWarning(): void {
    this.matDialog.open(WarningComponent);

    // going to localhost:4200/category/101
    // this.router.navigate(['../'], { relativeTo: this.activatedRoute }); // working
}

警告组件

// warning.component.html
<button mat-raised-button class="wrnBtn stayBtn" (click)="stay()">
    <span>Stay</span>
</button>
<button mat-raised-button class="wrnBtn closeBtn" (click)="close()">
    <span>Close</span>
</button>

// warning.component.ts
constructor(
    public warningDialog: MatDialogRef<WarningComponent>,
    private router: Router,
    private activatedRoute: ActivatedRoute
  ) { }
  
close() {
    this.warningDialog.close();
    this.router.navigate(['../'], { relativeTo: this.activatedRoute }); // not working properly
}
stay() {
    this.warningDialog.close();
}

1 个答案:

答案 0 :(得分:0)

如果您要从“ category / 101 / newCategory”转到“ category / 101”路线。然后执行以下操作: this.router.navigate(['/ category / 101']); 假设类别没有父路线。让我知道它是否有效。.