如何在运行时更改 Angular CDK 覆盖的目录 属性?
How to change dir property of the Angular CDK overlay at runtime?
我正在使用 Angular 10,单击后执行以下功能以改变预成型方向:
private changeHtmlDirection(direction: 'rtl' | 'ltr') {
document.getElementsByTagName("html")[0].dir = direction;
}
效果很好,只是 Angular CDK 没有更新。
我试图找到一个 API 来在运行时改变 Angular CDK 的方向,但找不到。
我看到有一个 BidiModule 但它只用于获取当前方向而不是设置它。
有什么解决办法吗?
根据 material 文档,您不能更改“html”标签上的 'dir' 以影响双向 API。您可以在以下 link 查看文档:
bi-directionality document
但是如果您想使用 material 双向性,您可以将 'dir' 指令添加到根组件中的容器元素中,如下所示:
<div [dir]="documentDirection"> </div>
并且每当 'documentDirection' 变量发生变化时,bidi“改变发射器”就会被发射。
喜欢下面的代码可以订阅:
constructor(
private dir: Directionality ) {
this.isRtl = dir.value === 'rtl';
this.dir.change.subscribe(() => {
this.isRtl = !this.isRtl;
});
}
我正在使用 Angular 10,单击后执行以下功能以改变预成型方向:
private changeHtmlDirection(direction: 'rtl' | 'ltr') {
document.getElementsByTagName("html")[0].dir = direction;
}
效果很好,只是 Angular CDK 没有更新。
我试图找到一个 API 来在运行时改变 Angular CDK 的方向,但找不到。 我看到有一个 BidiModule 但它只用于获取当前方向而不是设置它。
有什么解决办法吗?
根据 material 文档,您不能更改“html”标签上的 'dir' 以影响双向 API。您可以在以下 link 查看文档: bi-directionality document
但是如果您想使用 material 双向性,您可以将 'dir' 指令添加到根组件中的容器元素中,如下所示:
<div [dir]="documentDirection"> </div>
并且每当 'documentDirection' 变量发生变化时,bidi“改变发射器”就会被发射。 喜欢下面的代码可以订阅:
constructor(
private dir: Directionality ) {
this.isRtl = dir.value === 'rtl';
this.dir.change.subscribe(() => {
this.isRtl = !this.isRtl;
});
}