Я пытаюсь использовать CdkConnectedOverlay
для отображения наложения при нажатии кнопки.В основном это работает, но оверлей не перемещается при прокрутке.Я уверен, что есть что-то маленькое, что мне не хватает, но я не могу понять, насколько я понимаю.
Я использую Angular 7.2.8
и Angular CDK 7.3.3
Мысльэто может быть связано с отсутствующими стилями CDK (аналогично this ), но я импортировал их;если бы стили отсутствовали, я бы ожидал, что они не будут отображаться правильно в первую очередь.Мой просто не перемещается на свитке.
Шаблон:
<button
(click)="isOpen = !isOpen"
cdkOverlayOrigin
#trigger="cdkOverlayOrigin"
>Show</button>
<ng-template
cdkConnectedOverlay
[cdkConnectedOverlayOrigin]="trigger"
[cdkConnectedOverlayOpen]="isOpen"
>
Popover content
</ng-template>
Компонент:
@Component ( {
selector: 'app-popover',
templateUrl: './popover.component.html',
styleUrls: [ './popover.component.css' ],
changeDetection: ChangeDetectionStrategy.OnPush,
} )
export class PopoverComponent {
isOpen: boolean = false;
}
И Plunkr, показывающий проблему: https://stackblitz.com/edit/angular-7-popover
Обновление :
Проблема изменения положения прокрутки возникает только в том случае, если всплывающее окно находится в элементе, который переполняет своего родителя с помощью overflow: auto
.Если страница переполнена, то она работает нормально.Вы можете увидеть это поведение с помощью следующего шаблона
<div style="height: 300px; overflow-y: auto">
<!-- Scroll re-positioning does not work when scrolling in here -->
<div style="height: 100px"></div>
<app-popover>
Popover content
</app-popover>
<div style="height: 400px"></div>
</div>
<div style="height: 100px;"></div>
<!-- Scroll re-positioning works when scrolling here -->
<app-popover>
Popover content
</app-popover>
<div style="height: 1200px;"></div>
Я также обновил стек стека, чтобы показать эту проблему.