我正在尝试根据用户的语言选择动态更改布局,并即时从 LTR 切换到 RTL。
我正在使用 Angular 2 rc6,材料 2.0.0-alpha.9-3
看起来当页面加载时,它可以与 rtl 或 ltr 完美配合。但是,当它从应用程序内部动态更改时(请参阅 plunker),方向会发生变化,但生成的元素 md-sidenav-content 具有错误计算的 margin-right 和 margin-left。
进一步挖掘,我设法看到 _dir 对象有一个 eventEmitter 应该监视 _dir 的更改事件并重新计算边距
@角/材料/sidenav/sidenav.js:
_dir.dirChange.subscribe(function () { return _this._validateDrawers(); });
但是在动态改变方向时它永远不会被调用。虽然,_dir 在第一次加载页面时保持正确的值,无论是它的 ltr 还是 rtl。
最后,这是一个演示行为的 plunker:
http://plnkr.co/edit/o8lXWC?p=preview
我怀疑我没有正确使用 _dir ,但没有设法找出正确的方法。