typescript - Angular Material CDK Layout Breakpoints täcker inte iPad Pro-simulatorn i Google Chrome


Jag använder BreakpointObserver för att implementera det responsiva materialdesign i mitt Angular-projekt med följande kod:

tablet$: Observable<boolean> = this.breakpointObserver
.observe([Breakpoints.Tablet])
.pipe(map(result => result.matches), tap(() => this.changeDetectorRef.detectChanges()));

och sedan

this.tablet$.subscribe(isTablet => {
  this.isTablet = isTablet;
  console.log('IsTablet:' + this.isTablet);
});

Eftersom jag använder Google Chromes skärmstorlekar för att testa fungerar detta bra för iPad, men för iPad Pro (1024 x 1366) returnerar den observerbara $tablet false. Jag kollade API:et och iPad Pro:s skärmdimensioner är inte definierade i Breakpoints.

Vad är den bästa lösningen i detta scenario.

Svar #1

Du kan skicka in en anpassad medieförfrågan i observe-funktionen av this.breakpointObserver. Jag är verkligen dålig på medieförfrågningar, men här är ett exempel som jag gjorde med i princip din kod. Du måste leka lite med värdena för att få det som du vill, men detta borde få dig att komma igång:

this.iPadProObservable = this.breakpointObserver.observe('(max-width: 1024px)')
  .pipe(
    map(result => result.matches),
    tap(() => this.changeDetectorRef.detectChanges())
  );

Det verkar göra det jag förväntar mig när jag använder iPad Pro Chrome-förinställningen.