2017-11-30 8 views
0

これについての解決策はかなり長い間探してきました。角度材質:マットダイアログまたは@componentから開いたマット - シデナブ

私は角材2を使用しており、mat-dialogのボタンを押すか、またはダイアログが閉じるときに、mat-sidenav.open()メソッドを使用します。

ドキュメントによると、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はありませんが( )。

@componentからsidenavを開く方法はあると思いますが、いくつかの方法を試した後にどのように考えているのでしょうか?

おかげ

編集:私はあなたが私はそれを感謝答えとコードスニペットを含めることができますので、もし私が角度2+にかなり新たなんだと言っているはずです。

+0

#sidenavへの要素参照を作成し、そこから呼び出すだけです。 APIには、open()メソッドとclose()メソッドがあります。 –

+0

あなたはバインディングのダイアログコンポーネントに 'sidenav'変数参照を渡す必要があります。しかるにsidenavをモーダルから切り替えることができます。 –

+0

@RoddyoftheFrozenPeasどうすればこれらのことができますか?私はAngular 2 +にかなり新しいです。 – Richard

答えて

0

まだ回答が見つからない場合。ここで私はうまくいくと思います。

@PankajParkarのように、ダイアログボックスを開いたときに、sidenav変数をダイアログに渡すことができます。

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

次に、ダイアログ内からthis.data.sidenav.open()と呼ぶことができます。私はこれを試していないので、私はsidenavがどこに終わるかわからない。それはダイアログの下に表示される可能性がありますが、ダイアログがすぐに閉じると、問題にはならないと思います。

関連する問題