首页 > 解决方案 > 如何在运行时更改 Angular CDK 覆盖的 dir 属性?

问题描述

我正在使用 Angular 10,单击时会执行以下函数来执行方向更改:

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

它运行良好,只是 Angular CDK 没有更新。

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

有什么解决办法吗?

在此处输入图像描述

标签: htmlangulardomangular-material2angular-cdk

解决方案


根据材料文档,您不能更改“html”标签上的“dir”,以免影响 bidi API。您可以在以下链接查看文档: 双向文档

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

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

并且每当“documentDirection”变量发生变化时,都会发出双向“更改发射器”。像下面的代码你可以订阅它:

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

}


推荐阅读