1

我一直在寻找解决方案,所以任何帮助都会很棒。

我正在使用 Angular Material 2,我想通过按下 a 中的按钮或仅在对话框关闭时使用.open()a 的方法。mat-sidenavmat-dialog

根据文档,我认为我可以mat-sidenav用(或其他东西)标记元素,#sidenav然后放入(click)="sidenav.open()"按钮元素。但是,它不起作用(我读到它可能与不同的 z 平面有关?)。

它看起来像这样:

sidenav.html

<mat-sidenav-container>
  <mat-sidenav #sidenav opened="false"> ... </mat-sidenav>
</mat-sidenav-container>

<button mat-button (click)="openDialog"></button>

对话框.html

<button mat-button (click)="sidenav.open()">Open Sidenav</button>

对话框打开和关闭都很好,sidenav 也是如此(通过不同的按钮)。

我确定有一种方法可以从@component 打开sidenav,但在尝试了几种方法后我还没有弄清楚如何。

谢谢

编辑:我应该说我对 Angular 2+ 还很陌生,所以如果你能包含一个带有答案的代码片段,我会很感激的。

4

1 回答 1

0

如果你还没有找到答案。这是我认为可能有效的方法。

就像@PankajParkar 提到的那样,您可以sidenav在打开对话框时将变量传递到对话框中。

let dialogRef = this.dialog.open(MyDialogComponent, {
    data: {
        sidenav: this.sidenav
    }
})

然后从对话框内部您可以调用this.data.sidenav.open(). 由于我还没有尝试过,所以我不确定 sidenav 会在哪里结束。它可以显示在对话框下方,但如果对话框立即关闭,那么我想这不会有问题。

于 2018-02-04T20:26:28.750 回答