如何关闭隐藏的 Angular Material 类的 flex 布局

Posted

技术标签:

【中文标题】如何关闭隐藏的 Angular Material 类的 flex 布局【英文标题】:How do I turn off flex layout for a hidden Angular Material class 【发布时间】:2017-12-28 11:14:45 【问题描述】:

在 Angular cli 开发环境中,我在名为 layout-grid.component.html 的文件中创建了一个带有单个图块的网格列表组件:

<md-grid-list cols="4" rowHeight="100px">
  <md-grid-tile
      *ngFor="let tile of tiles"
      [colspan]="tile.cols"
      [rowspan]="tile.rows"
      [style.background]="tile.color">
    <app-splash></app-splash>
  </md-grid-tile>
</md-grid-list>

网格图块中嵌入了一个名为 app-splash 的组件,其中包含单个图像:

<img src="../assets/horse.jpg" >

当我运行网络应用程序时,我看到图像位于图块的中间,但边缘有一个间隙。我希望 img 填充瓷砖。将检查器与 Chrome 一起使用,我发现罪魁祸首是隐藏的类:

.mat-grid-tile .mat-figure 
  align-items:center;
  bottom:0;
  display:flex;
  height:100%;
  justify-content:center;
  left:0;
  margin:0;
  padding:0;
  position:absolute;
  right:0;
  top:0;

如果我关闭 display: flex 属性,我会得到我需要的结果。如何在我的代码中关闭它?将网格列表组件的 css 设置为内联没有任何作用。我需要更改打字稿吗? layout-grid.component.ts 如下:

import  Component, OnInit  from '@angular/core';

@Component(
  selector: 'app-layout-grid',
  templateUrl: './layout-grid.component.html',
  styleUrls: ['./layout-grid.component.css']
)
export class LayoutGridComponent implements OnInit 

  tiles = [
    text: 'One', cols: 4, rows: 10, color: 'lightblue',
  ];

  constructor()  

  ngOnInit() 
  

【问题讨论】:

【参考方案1】:

在 /layout-grid.componet.css 中添加:

::ng-deep md-grid-tile.mat-grid-tile .mat-figure 
  display: block !important; /* or whichever you need */

这将覆盖角度材质 css 中的那个。

【讨论】:

似乎 Angular 不太喜欢组件中的组件?我在摆脱网格结构方面取得了一些成功。 我面临同样的问题(尝试了上述答案以及 md-grid-title 上的单独课程,没有任何帮助)。但我无法从这个线程中找出解决方案,因为讨论开始聊天(给出 404)。 @Davtho1983:你能更新一下修复方法吗?它是否脱离了网格:(? 放 ::ng-deep .mat-grid-tile .mat-figure

以上是关于如何关闭隐藏的 Angular Material 类的 flex 布局的主要内容,如果未能解决你的问题,请参考以下文章

HTML Angular Material:在动态形成的表格中隐藏列

如何使用 Angular-Material 获得全高侧导航

Angular Material - 不关闭 Material 小吃吧

Angular Material Stepper 步骤不能用 [hidden] 隐藏

Angular Material 指令在小型/移动显示器上隐藏元素

Angular Material 分页器通过全局背景颜色隐藏按钮和页数