gpt4 book ai didi

Angular Material Flex MediaObserver 订阅了两次

转载 作者:行者123 更新时间:2023-12-05 06:16:57 26 4
gpt4 key购买 nike

我正在使用 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');
}
});
}

此外,我还发现了以下可能相关的问题;

https://github.com/angular/flex-layout/issues/504

https://github.com/angular/flex-layout/issues/1059

关于Angular Material Flex MediaObserver 订阅了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61878856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com