作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Material Flex Layout 来检测屏幕尺寸。但是我得到了两次订阅结果。在另一个 Angular 项目中使用相同的代码结果很好。
constructor(
public mediaObserver: MediaObserver) {
mediaObserver.media$.subscribe((change: MediaChange) => {
if ( change.mqAlias == 'xs') {
console.log('xsA');
}else if ( change.mqAlias == 'sm') {
console.log('xsB');
}else{
console.log('xsC');
}
});
}
这是我的代码。
最佳答案
很难说为什么您提供的代码会产生两次排放。但作为解决方法,您可以使用 rxjs distinctUntilKeyChanged运营商;
constructor(public mediaObserver: MediaObserver) {
mediaObserver.media$.pipe(distinctUntilKeyChanged('mqAlias'))
.subscribe((change: MediaChange) => {
if (change.mqAlias == 'xs') {
console.log('xsA');
} else if (change.mqAlias == 'sm') {
console.log('xsB');
} else {
console.log('xsC');
}
});
}
此外,我还发现了以下可能相关的问题;
关于Angular Material Flex MediaObserver 订阅了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61878856/
我正在使用 Material Flex Layout 来检测屏幕尺寸。但是我得到了两次订阅结果。在另一个 Angular 项目中使用相同的代码结果很好。 constructor( public
我是一名优秀的程序员,十分优秀!