Есть ли способ вставить прикрепленный компонент в активную позицию? Например, я говорю всплывающей подсказке открыть выше, но это невозможно сделать, и оверлей откроет его ниже. Я хочу добавить стрелку, указывающую на мой элемент, из всплывающей подсказки, и мне нужно сейчас, если наложение находится выше / ниже элемента, чтобы правильно расположить стрелку
Получить активную позицию на угловом наложении cdk?
Ответы (2)
ConnectedPositionStrategy (устаревший) имеет свойство onPositionChange, а FlexibleConnectedPositionStrategy - свойство positionChanges, мы не можем подписаться на эти наблюдаемые объекты до наложение создается, поэтому решение состоит в том, чтобы подписаться после создания наложения:
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));
person
Nelu B
schedule
26.09.2018
Этого недостаточно, если наложение сдвигается с его стороны, исходная точка может быть отключена, поэтому расчет неверен.
- person jsgoupil; 19.12.2018
Вы можете использовать "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' <--
}
])
})
person
Ricardo Trindade
schedule
09.04.2020