在进行了一些搜索之后,我意识到我应该使用柔性布局库来使以材料为主题的UI响应(如应答这里)。根据文档,这个库提供了以编程方式检测媒体查询激活的MediaObserver
类。
我用了材料示意图命令-
ng g @angular/material:navigation shell/layout
添加一个Sidenav
组件,并注意到以下生成的代码-
export class LayoutComponent {
isHandset$: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset).pipe(
map(result => result.matches),
shareReplay()
);
constructor(private breakpointObserver: BreakpointObserver) { }
}
它使用BreakpointObserver
类和来自@angular/cdk/layout
包的预定义Breakpoints
来检测视口更改。文档说-
布局包提供实用程序,用于构建响应屏幕大小变化的UI。
因此,显然,有两个不同的库可以使材料主题的UI响应,他们使用不同的方法。(如果我错了,请纠正我)。
我想知道-
MediaObserver
是否在幕后使用BreakpointObserver
?@angular/cdk/layout
实用程序吗?在这方面是否有一些最佳做法?编辑: 2020.05.11
根据MediaObserver
的源代码,它不使用底层的BreakpointObserver
.它使用本机Window.matchMedia()
API。
发布于 2022-04-22 10:56:35
来自:https://github.com/angular/flex-layout/issues/685
@转角/cdk BreakpointObserver不会取代@角/挠曲布局MediaObserver。MediaObserver是一个增强版本,它将标准和重叠(lt-xxx,gt-xxx)断点的激活通知订阅者。
https://stackoverflow.com/questions/58603020
复制相似问题