要解决Angular mat-menu出现在页面外部的问题,可以尝试以下解决方法:
import { Component } from '@angular/core';
import { ConnectionPositionPair, FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';
@Component({
selector: 'app-menu-example',
templateUrl: 'menu-example.html',
styleUrls: ['menu-example.css'],
})
export class MenuExample {
positionStrategy: FlexibleConnectedPositionStrategy;
constructor() {
this.positionStrategy = this.createPositionStrategy();
}
createPositionStrategy(): FlexibleConnectedPositionStrategy {
return this.overlay.position().flexibleConnectedTo(this.origin.elementRef)
.withPositions([
new ConnectionPositionPair(
{originX: 'start', originY: 'top'},
{overlayX: 'start', overlayY: 'top'}
),
])
.withDefaultOffsetX(8)
.withDefaultOffsetY(8);
}
}
这样,菜单将出现在触发元素的下方。
请根据具体需求选择适合的解决方法,并根据需要进行调整。