Я думаю, что самый простой и быстрый способ - реализовать медиа-запрос css, но это то, что вам не нужно. Затем вы можете создать сервис, который управляет точками останова и использовать его там, где вам это нужно. Было бы что-то похожее на это:
import { Injectable } from '@angular/core';
import { BreakpointObserver, BreakpointState, Breakpoints } from '@angular/cdk/layout';
import { Subject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class BreakpointsService {
isMobile: Subject<boolean> = new Subject();
constructor(
private breakpointObserver: BreakpointObserver,
) {
this.breakpointObserver
.observe([
Breakpoints.XSmall
])
.subscribe((state: BreakpointState) => {
if (state.matches) {
// console.log('isMobile');
this.isMobile.next(true);
} else {
// console.log('not isMobile');
this.isMobile.next(false);
}
});
}
isMobile$() {
return this.isMobile.asObservable();
}
isMatchedMobile() {
const rta = this.breakpointObserver.isMatched([Breakpoints.XSmall]);
this.isMobile.next(rta);
}
}
А в твоих компонентах используйте вот так:
this.breakpointsService.isMobile$()
.pipe(
takeUntil(this.unsubscribe$)
)
.subscribe(value => {
this.isMobile = value;
});