【问题标题】:NgStyle in Angular 7 CSS grid layout not working properly?Angular 7 CSS 网格布局中的 NgStyle 无法正常工作?
【发布时间】:2019-08-09 18:37:57
【问题描述】:

我在更新到 Angular 7 后遇到 ngStyle 问题。在 Angular 5 中它工作正常。

使用 ngStyle 我通过 Css 网格动态应用样式。

但不知道为什么 'grid-column': '1 / span 2' 不起作用。

这是我的代码

<div class="widthHeight100"
     [ngStyle]="getStyleForGroup(group)">
  <div *ngFor="let subGroup of group?.childs"
       [ngStyle]="getStyleForSubGroup(subGroup)">

在打字稿中

网格容器:

  getStyleForGroup(mdg: MdgSimple) {
let style: any = {
  'width': '100%',
  'height': '100%'
};
if (!isNullOrUndefined(mdg)) {
  if (!isNullOrUndefined(mdg.childs)) {
    if (mdg.childs.length > 0) {
      style = {
        'display': 'grid',
        'grid-template-rows': this.getGridTemplateCount(mdg.childs, true),
        'grid-template-columns': this.getGridTemplateCount(mdg.childs, false),
        'grid-column-gap': '4px',
        'grid-row-gap': '4px',
        'justify-items': 'start',
        'align-items': 'start',
        'padding': '5px'
      };
    }
  }
}
return style;

}

孩子们:

  getStyleForSubGroup(mdsg: MdsgSimple) {
let style: any = {
  'width': '100%',
  'height': '100%'
};
if (!isNullOrUndefined(mdsg) && !isNullOrUndefined(mdsg.layout)) {
  style = {
    'grid-row': this.getCssRowInfo(mdsg),
    'grid-column': this.getCssColumnInfo(mdsg),

    'height': this.getHeight(mdsg),
    'width': this.getWidth(mdsg),
    'min-width': this.getMinWidth(mdsg),
    'max-width': this.getMaxWidth(mdsg),
    'min-height': this.getMinHeight(mdsg),
    'max-height': this.getMaxHeight(mdsg),
  };
}
return style;

}

但控件相互重叠。我已经使用显示不安全的 chrome css 元素检查器网格区域进行了检查。

但在 Angular 5 版本中一切正常。 示例 1 / span 2 也不起作用

这里是错误的屏幕截图。

有什么建议吗?

【问题讨论】:

    标签: css angular7 ng-style


    【解决方案1】:

    我也有同样的问题。 ngStyle 正在取代这个: { 'grid-column': (width > 1 ? column + ' / ' + (column + width) : column + ''), 'grid-row': '' + row }
    有了这个: style="grid-area: 1 / unsafe / auto / unsafe 当宽度 > 1

    【讨论】:

    • 您找到解决方案了吗?我仍在寻找解决方案。 Angular 5 工作正常
    • 我改用了这个:{ 'grid-column-start': column, 'grid-column-end': (column + width), 'grid-row': row },它工作正常。
    • 感谢它现在的工作。主要问题是 Angular dom 敏感化
    • 答案如何?这只是说明问题
    【解决方案2】:

    HTML

    <p [ngStyle]="myStyles">
        Hello World!
    </p>
    

    TS

    myStyles = {
        'color': 'red',
        'font-size': '20px',
        'font-weight': 'bold'
    }
    

    我只是写了非常基本的代码,试试这个,希望它能帮助你。谢谢

    【讨论】:

    • 以上代码有效。但我的代码不同。它在 Angular5 中运行良好而不是在 7 中
    • 请分享您面临的错误。因为我在我的 Angular7 应用程序中验证了这段代码。
    • 我没有收到任何错误。但是控件像屏幕截图一样重叠。当我使用 chrome 调试器检查元素时,网格区域显示不安全。
    • 请分享 fiddle 的重叠问题,因为在截图中很难验证 CSS 相关问题。谢谢
    • 角度 github.com/angular/angular/issues/28897 似乎对这个网格属性有不同的解释。就个人而言,我发现的解决方法是列出可能性并将类动态分配给元素: .app-scroller-spread-row-4 { grid-column: 1 / 6; }.app-scroller-spread-row-5 { 网格列:1 / 7;}
    猜你喜欢
    • 2020-05-17
    • 1970-01-01
    • 2021-09-12
    • 2022-11-04
    • 1970-01-01
    • 2012-10-10
    • 2019-12-27
    相关资源
    最近更新 更多