微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在运行时更改 Angular CDK 覆盖的 dir 属性?

如何解决如何在运行时更改 Angular CDK 覆盖的 dir 属性?

我使用的是 Angular 10,点击后会执行以下功能来改变方向:

private changeHtmlDirection(direction: 'rtl' | 'ltr') {
    document.getElementsByTagName("html")[0].dir = direction;
}

效果很好,只是 Angular CDK 没有更新。

我试图找到一个 API 来在运行时改变 Angular CDK 的方向,但找不到。 我看到有一个 BidiModule 但它仅用于获取当前方向而不是设置它。

有什么解决办法吗?

enter image description here

解决方法

根据材料文档,您不能更改“html”标签上的“dir”,从而影响 bidi API。您可以在以下链接中查看该文档: bi-directionality document

但是,如果您想使用材料双向性,您可以将 'dir' 指令添加到根组件中的容器元素中,如下所示:

<div [dir]="documentDirection"> </div>

并且每当'documentDirection'变量改变时,bidi“改变发射器”将被发射。 像下面的代码你可以订阅它:

constructor(
private dir: Directionality ) {
this.isRtl = dir.value === 'rtl';
 this.dir.change.subscribe(() => {
  this.isRtl = !this.isRtl;
 });

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。