我正在尝试使材质菜单中的滚动条消失,但是我似乎无法做到这一点。
现在就这样:
如我所愿:
我知道我必须在css中设置的选项是overflow: hidden;
,但是当我将其放入组件css中时,这似乎并没有解决问题。
我尝试将该选项设置为.mat-menu-panel
,.mat-menu
甚至使用自定义类,但是它不起作用。
我的html看起来像这样:
<mat-table [dataSource]="dataSource">
<ng-container matColumnDef="employee_name">
<th mat-header-cell *matHeaderCellDef class="rest"> Nombre </th>
<td mat-cell *matCellDef="let element"> {{element.employee_name}}</td>
</ng-container>
<ng-container matColumnDef="date">
<th mat-header-cell *matHeaderCellDef class="rest"> Fecha </th>
<td mat-cell *matCellDef="let element"> {{element.date | date:'yyyy-MM-dd'}}</td>
</ng-container>
<ng-container matColumnDef="duration">
<th mat-header-cell *matHeaderCellDef class="rest"> Duración </th>
<td mat-cell *matCellDef="let element"> {{element.duration}}</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef class="menu"></th>
<td mat-cell *matCellDef="let element" (click)="$event.stopPropagation()">
<button mat-icon-button [matMenuTriggerFor]="menu">
<mat-icon>more_vert</mat-icon>
</button>
<mat-menu #menu="matMenu" class="menu-without-scroll">
<button mat-menu-item (click)="editDuration(element)">
<mat-icon>edit</mat-icon>
<span>Editar</span>
</button>
<button mat-menu-item (click)="deleteDuration(element)">
<mat-icon>delete</mat-icon>
<span>Eliminar</span>
</button>
</mat-menu>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedComumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedComumns;" (click)="onEdit(row)"></tr>
</mat-table>
菜单在表格的单元格之一中。
从浏览器的开发人员工具中,如果我将.mat-menu-panel
overflow: auto
更改为overflow:hidden
,它将正确呈现,但是如果我在.css中将其更改,将无法正常工作。
依赖关系(如果有帮助的话)是:
"dependencies": {
"@angular/animations": "~7.0.0",
"@angular/cdk": "^7.2.1",
"@angular/common": "~7.0.0",
"@angular/compiler": "~7.0.0",
"@angular/core": "~7.0.0",
"@angular/forms": "~7.0.0",
"@angular/http": "~7.0.0",
"@angular/material": "^7.2.1",
"@angular/platform-browser": "~7.0.0",
"@angular/platform-browser-dynamic": "~7.0.0",
"@angular/router": "~7.0.0",
"angular-material": "^1.1.12",
"core-js": "^2.5.4",
"hammerjs": "^2.0.8",
"rxjs": "~6.3.3",
"zone.js": "~0.8.26"
},
如果需要更多信息,请告诉我。
答案 0 :(得分:2)
因为,当您使用角度时,一个通用属性将在DOM中呈现,例如 ng-content会覆盖您用CSS编写的类属性,因此请尝试使用此代码,以消除要在application中使用的本机角度样式。
转到组件
import {ViewEncapsulation} from '@angular/core';
然后
@Component({
.....
.....
encapsulation: ViewEncapsulation.None
})
然后您的样式将由浏览器获取。
答案 1 :(得分:0)
我知道这个问题已经有几年了,但最后一个答案可能会导致 css 类从您自己的样式渗入到子元素中的严重问题。当然,您现在可以轻松地覆盖子组件的 css 样式,但这也意味着您可以轻松地无意中覆盖它们。除非绝对必要,否则不应使用 ViewEncapsulation.None
。
相反,最好使用 ::ng-deep
(see the reference) 指定何时要覆盖子组件的样式。
就您而言,您可以执行以下操作:
::ng-deep .menu-without-scroll {
overflow: hidden !important;
}
请注意,虽然 ::ng-deep
已被弃用,但目前没有替代方案,因此继续使用它是合理的。有关详细信息,请参阅 this answer。