【发布时间】:2019-06-25 00:06:42
【问题描述】:
我正在尝试使用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>
我还更新了 stackblitz 以显示此问题。
【问题讨论】:
标签: angular-cdk