在我正在开发的应用程序中,我有一个 Angular Material 对话框,其中包含公司的 mat-selection-list 和字母字符的 mat-list,可以单击以跳转到不同的字母标题。我的问题是,每次启动对话框时,包含我的字母表(对话框的右侧)的 mat-list 必须“弹出”到位,而不是最初应该在的位置。这看起来有点草率/跳跃,我想知道是否有任何方法可以让它在正确的位置。
这是一个展示该问题的 gif: https ://imgur.com/a/rdn1lq6
这是我当前的代码:
// Opening the dialog
const dialogRef = this.dialog.open(CompanySelectionDialog, {
width: '90vw',
panelClass: 'companySelectionPanel',
data: {companies: this.companies},
disableClose: true
});
以及实际对话内容的 HTML:
<!-- Dialog Page HTML -->
<mat-dialog-content>
<div *ngFor="let companies of this.companiesSortedByLetter" style="width: 95%">
<mat-toolbar [id]="companies.letter">
<span>{{ companies.letter.toUpperCase() }}</span>
</mat-toolbar>
<mat-selection-list #companies [multiple]="false" [(ngModel)]="selectedCompany">
<mat-list-option ngDefaultControl *ngFor="let sortedCompany of companies.companies" [value]="sortedCompany" mat-dialog-close (click)="onSelect(selectedCompany[0])">
{{ sortedCompany.Description + ' ' + sortedCompany.ID }}
</mat-list-option>
</mat-selection-list>
</div>
<div style="display: block; position: absolute; left: 83.5%; bottom: 50%; top: 20%; right: 0%; z-index: 100;">
<mat-list>
<mat-list-item class="alphaList" ontouchmove="console.log('moved')" matRipple
*ngFor="let letter of this.companiesSortedByLetter"
(click)="scrollToLetter(letter.letter)">{{ letter.letter.toUpperCase() }}
</mat-list-item>
</mat-list>
</div>
</mat-dialog-content>
我的 global.scss 中的样式规则用于面板:
.companySelectionPanel {
.alphaList {
@media screen and (max-height: 1024px) {
height: 30px !important
}
@media screen and (min-height: 1366px) {
height: 38px !important
}
}
}
提前感谢任何人对此的任何见解。