cdk Bidirectionality提供给我们的功能,就是用来设置布局方向。更加详细的内容可以参考官网 https://material.angular.io/cdk/bidi/overview
使用之前先provider BidiModule
import {BidiModule} from \'@angular/cdk/bidi\';
bidi里面咱们需要知道的就两个东西:一个Service Directionality、一个指令 Dir。
一 Directionality
Directionality Service两个左右:获取当前应用程序的布局方向、监听应用程序布局方向的变化。
1.1 Directionality Service属性方法
export declare class Directionality implements OnDestroy {
/** 当前应用程序的布局方向 \'ltr\' or \'rtl\' */
readonly value: Direction;
/** 当前应用程序的布局方向发生改变了的回调函数 \'ltr\' / \'rtl\' state changes. */
readonly change: EventEmitter<Direction>;
}
1.2 Directionality Service使用
import {Component, Inject, OnDestroy} from \'@angular/core\';
import {DIR_DOCUMENT, Directionality} from \'@angular/cdk/bidi\';
import {Sub ion} from \"rxjs\";
@Component({
selector: \'app-cdk-bidi\',
templateUrl: \'./cdk-bidi.component.html\',
styleUrls: [\'./cdk-bidi.component.less\']
})
export class CdkBidiComponent implements OnDestroy {
private _dirChangeSub ion = Sub ion.EMPTY;
constructor(
@Inject(DIR_DOCUMENT) public dirDoc: any,
public directionality: Directionality
) {
this._dirChangeSub ion = directionality.change.subscribe(() => {
console.log(\'bbb\');
});
}
ngOnDestroy() {
this._dirChangeSub ion.unsubscribe();
}
}
常规Service的用法
二 Dir
Dir指令用于设置布局方向和监听布局方向的变化。
Selector: [dir]
Exported as: dir
2.1 Dir指令属性
| 属性 | 类型 | 解释 |
|---|---|---|
| change: EventEmitter | @Output(‘dirChange’) | 当前视图布局方向发生改变的时候调用 |
| value: Direction | 当前视图元素的布局方向 |
2.2 Dir指令使用
import {Component} from \'@angular/core\';
@Component({
selector: \'app-cdk-bidi\',
template: `
<!--从左到右-->
<p dir=\"LTR\" style=\"border: solid 1px #ccc; color: red; padding: 10px\">
从左到右排列
</p>
<!--从右到左-->
<p dir=\"RTL\" style=\"border: solid 1px #ccc; color: red; padding: 10px\">
从右到左排列
</p>
<div dir=\"RTL\" style=\"border: solid 1px #ccc; padding: 10px\">
<div style=\"margin-left: 8px; margin-right: 8px; display: inline-block;
width: 250px; background-color: #cccccc; padding: 4px; color: red\"
dir=\"LTR\">第一个位置--内容靠左
</div>
<div style=\"margin-left: 8px; margin-right: 8px; display: inline-block;
width: 250px; background-color: #cccccc; padding: 4px; color: red\"
dir=\"RTL\">第二个位置--内容靠右
</div>
</div>
<!--可以控制方向-->
<p [dir]=\"dir\" (dirChange)=\"dirChange()\" style=\"border: solid 1px #ccc; color: red; padding: 10px\">
可以动态切换方向
</p>
<button (click)=\"switchDir()\">切换方向</button>
`
})
export class CdkBidiComponent {
dir = \"rtl\";
switchDir() {
if (this.dir === \"rtl\") {
this.dir = \"ltr\";
} else {
this.dir = \"rtl\";
}
}
dirChange() {
console.log(\'aaa\');
}
}
因为cdk bidi的使用非常简单,所以我们讲的也非常的简单。实例连接 https://github.com/tuacy/angular-cdk-study
继续阅读与本文标签相同的文章
-
为什么绝大部分公司用钉钉上班不用微信,其实原因很简单
2026-05-18栏目: 教程
-
谷歌证实Pixel 4不支持Daydream,VR头显盒子也将停售
2026-05-18栏目: 教程
-
图解:抛弃IDE使用编译器亲手编译C
2026-05-18栏目: 教程
-
最新测试证明:无人驾驶技术还需加强安全性和稳定性
2026-05-18栏目: 教程
-
任正非:5G只是一个工具 本身没有安全问题
2026-05-18栏目: 教程
