要更新Angular CDK Overlay中全局定位的overlayRef的位置,可以使用overlayRef.updatePosition()方法。下面是一个示例代码:
首先,需要引入Overlay和OverlayRef类:
import { Overlay, OverlayRef } from '@angular/cdk/overlay';
然后,在组件的构造函数中注入Overlay:
constructor(private overlay: Overlay) { }
接下来,创建一个方法来创建和显示Overlay:
showOverlay() {
// 创建OverlayRef
const overlayRef: OverlayRef = this.overlay.create();
// 设置OverlayRef的位置策略
const positionStrategy = this.overlay.position()
.global()
.centerHorizontally()
.centerVertically();
// 连接位置策略和OverlayRef
overlayRef.attach(new TemplatePortal(this.overlayTemplate, this.viewContainerRef, {
$implicit: this.data
}));
// 设置OverlayRef的位置策略
overlayRef.updatePositionStrategy(positionStrategy);
// 显示Overlay
overlayRef.attach(new ComponentPortal(OverlayComponent));
// 更新OverlayRef的位置
overlayRef.updatePosition();
}
在这个示例中,我们首先创建一个OverlayRef对象,然后设置位置策略,连接位置策略和OverlayRef,最后使用updatePosition()方法更新位置。
请注意,上面的代码示例中的this.overlayTemplate和this.viewContainerRef是示例中的变量,你需要根据自己的代码和需求进行相应的调整。
希望这个示例能帮助到你解决问题!