7

有没有办法让附加组件覆盖活动位置?例如,我说要在上方打开一个工具提示,但这无法完成,并且叠加层将在下方打开它。我想从工具提示中添加一个指向我的元素的箭头,如果覆盖在元素上方/下方,我现在需要正确定位箭头

4

2 回答 2

6

ConnectedPositionStrategy (deprecated) 有onPositionChange属性,而 FlexibleConnectedPositionStrategypositionChanges属性,我们不能在覆盖创建之前订阅这个 observables,所以,解决方案是在覆盖创建之后订阅:

const positionStrategy = this.overlay
        .position()
        .flexibleConnectedTo(this.selectHeader)
        .withPositions([
         {
            originX: 'start',
            originY: 'bottom',
            overlayX: 'start',
            overlayY: 'top',
          },
          {
            originX: 'start',
            originY: 'top',
            overlayX: 'start',
            overlayY: 'bottom',
          },
        ]);
    this.panelOverlay = this.overlay.create({positionStrategy});
    positionStrategy.positionChanges.subscribe(pos => console.log(pos));
于 2018-09-26T14:00:23.477 回答
3

您可以使用“panelClass”,如下所示:

return new OverlayConfig({
  hasBackdrop: true,
  positionStrategy: this.overlay.position()
    .flexibleConnectedTo(new ElementRef(mouseEvent.target))
    .withFlexibleDimensions(false)
    .withPositions([
      {
        originX: 'start',
        originY: 'top',
        overlayX: 'start',
        overlayY: 'top',
        panelClass: 'top' <--
      },
      {
        originX: 'start',
        originY: 'bottom',
        overlayX: 'start',
        overlayY: 'bottom',
        panelClass: 'bottom' <--
      }
    ])
})

结果

于 2020-04-09T09:00:19.303 回答