ユーザーの言語選択に応じてレイアウトを動的に変更し、その場で LTR から RTL に切り替えようとしています。
Angular 2 rc6、マテリアル 2.0.0-alpha.9-3 を使用しています
ページが読み込まれると、rtl または ltr で完全に機能するように見えます。ただし、アプリ内から動的に変更すると (plunker を参照)、方向は変わりますが、生成された要素 md-sidenav-content の margin-right と margin-left の計算が間違っています。
さらに掘り下げると、_dir オブジェクトには、_dir の変更イベントを監視し、マージンを再計算する必要がある eventEmitter があることがわかりました。
@angular/material/sidenav/sidenav.js:
_dir.dirChange.subscribe(function () { return _this._validateDrawers(); });
ただし、方向を動的に変更する場合は呼び出されません。ただし、_dir は、ltr か rtl かに関係なく、ページが初めて読み込まれるときに正しい値を保持します。
最後に、動作を示すプランカーを次に示します。
http://plnkr.co/edit/o8lXWC?p=preview
_dir を正しく使用していないと思われますが、それを行う正しい方法を理解できていません。