Точка останова (наблюдатель) в соответствии с данным руководством: https://alligator.io/angular/breakpoints-angular-cdk/
В Angular CDK имеется пакет макетов со службами, которые позволяют легко определять размеры области просмотра и сопоставлять их с медиа-запросами.Это позволяет вам полностью контролировать пользовательский интерфейс и приспосабливаться к различным размерам экрана.
Таким образом, точка останова является поворотной точкой, когда, например, разрешение больше не рассматривается как ландшафтный режим, а в портретном режимеРежим.Или в случае isHandset, когда разрешение достаточно мало, чтобы «официально» считаться трубкой / мобильным устройством.
Observable
в isHandset: Observable<BreakpointState>
означает, что платформа Angular CDK скорее внедряет поток RXJSчем статическое значение.Поэтому вам нужно подписаться на поток, чтобы получить последнее значение и все последующие обновления.
isHandset | async
означает, что используется Angular async-Pipe.Async-pipe автоматически подписывается на поток, возвращает значение, инициирует обнаружение изменений и отписывается от потока (важно отписаться, чтобы избежать утечки памяти).
!.
in (isHandset | async)!является ненулевым утверждением, предотвращающим появление ошибки при доступе к свойству, если isHandset еще не имеет значения в потоке.https://angular.io/guide/template-syntax#expression-operators
The!в !(isHandset | async)!.matches
отображает логический результат проверки совпадений
evaluation ? ifTrue : ifFalse
- это оператор if-else, известный многим языкам программирования.И [что-то] - это способ Angular передавать данные из родительского компонента в дочерний.Таким образом, в результате строка [mode]="(isHandset | async)!.matches ? 'over' : 'side'"
передает строковое значение как @Input
-конфигурацию модуля в зависимости от того, находитесь ли вы на мобильном телефоне или нет.
Это должны быть все жесткие частив коде.Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать.