Угловой материал: откройте mat-sidenav из mat-dialog или @component

Я долго искал решение для этого, поэтому любая помощь была бы отличной.

Я использую Angular Material 2, и я хочу использовать .open() метод для mat-sidenav нажав кнопку в mat-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>

dialog.html

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

Диалог открывается и закрывается нормально и sidenav (через другую кнопку).

Я уверен, что есть способ открыть sidenav из @component, но я не понял, как после того, как попробовал несколько методов.

Спасибо

Изменить: я должен был сказать, что я довольно плохо знаком с Angular 2+, так что если бы вы могли включить фрагмент кода с ответом, я был бы признателен.

1 ответ

Если вы до сих пор не нашли ответ. Вот то, что я думаю, может работать.

Как упомянуто @PankajParkar, вы можете передать sidenav переменная в диалоге, когда вы открываете диалог.

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

Затем из диалога вы можете позвонить this.data.sidenav.open(), Так как я не пробовал это, я не уверен, где sidenav закончится. Он может отображаться под диалоговым окном, но если диалоговое окно закрывается немедленно, я думаю, это не будет проблемой.

Другие вопросы по тегам