html - 如何在运行时更改 Angular CDK 覆盖的 dir 属性?
问题描述
我正在使用 Angular 10,单击时会执行以下函数来执行方向更改:
private changeHtmlDirection(direction: 'rtl' | 'ltr') {
document.getElementsByTagName("html")[0].dir = direction;
}
它运行良好,只是 Angular CDK 没有更新。
我试图找到一个 API 来在运行时改变 Angular CDK 的方向,但找不到任何东西。我看到有一个BidiModule但它仅用于获取当前方向而不是设置它。
有什么解决办法吗?
解决方案
根据材料文档,您不能更改“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;
});
}
推荐阅读
- elasticsearch - spring-data-elasticsearch如何声明4.1.0-RC1版本
- c# - 从 API 检索数据
- c++ - make install partio 时出现“找不到 -lOpenGL::OpenGL”错误
- python - 在列表中查找特定排序序列的实例
- php - Sensio\Bundle\DistributionBundle\Composer\ScriptHandler 类不可自动加载,无法调用 symfony-scripts 脚本
- r - 列组的多元线性回归
- android - 如何调整容器的大小以消除颤动中的溢出?
- django - Django 作为 React 原生移动应用的后端,我们如何通过社交媒体注册来验证用户身份?
- powershell - 添加广告用户的powershell脚本
- reactjs - 通过扩展运算符反应状态操作