我是使用 angular 的新手。
使用网格布局时,我没有得到我想要的结果。为了调试,我创建了以下元素:
<div *ngFor=" let tableVersionHeader of tableVersion.xAxis.tableVersionHeaders"
class="grid-cell text"
[ngStyle]="{
'height': 'auto',
'text-align': 'center !important',
'border': '1px solid black',
'padding': '8px',
'grid-column': tableVersionHeader.columnIndex + 2 + ' / span ' + tableVersionHeader.breadth,
'grid-row': tableVersionHeader.level + ' / span ' + ((tableVersionHeader.children!.length === 0 || !tableVersionHeader.isAbstract)) ? (tableVersion.xAxis.rowCount - (tableVersionHeader.level ?? 0)) : 1
}">
<p>{{tableVersionHeader.headerVersion?.code}} - {{tableVersionHeader.headerVersion?.label}}</p>
<p>grid-column: {{tableVersionHeader.columnIndex + 2}} / span {{tableVersionHeader.breadth}}</p>
<p>grid-row: {{tableVersionHeader.level}} / span {{((tableVersionHeader.children!.length === 0 || !tableVersionHeader.isAbstract)) ? (tableVersion!.xAxis.rowCount - (tableVersionHeader.level ?? 0)) : 1}}</p>
</div>
grid-column
正如您所看到的,我正在打印我期望grid-row
的 div 中的值。
我的输出例如:
0008 - Internal rating scale
grid-column: 2 / span 1
grid-row: 1 / span 1
而元素上设置的样式是:
height: auto;
border: 1px solid black;
padding: 8px;
grid-area: 3 / 2 / auto / span 1;
不知何故,角度(?)将grid-column
和grid-row
值重写为grid-area
但方式不正确。
我找不到关于 angular 为什么会这样做以及如何阻止它的参考。我使用 Firefox 和 Chrome 进行了双重检查,两者都显示相同的行为。
提前感谢您的帮助。
编辑:Stackblitz 示例代码 https://angular-3plybjxk.stackblitz.io
问题在于缺少括号,这可能导致计算错误。
完整代码:
Stackblitz 演示
显然,Renderer2 做了一个优化,将 grid-row + grid-col 转换为网格区域,以简化操作。
您可以通过将其中一个属性标记为重要(但不能同时标记为重要)来摆脱这种简化!
来自分叉的stackblitz 示例。
但是,当 gird-column/row 优化为 gird-area 时,我没有看到您的版本有任何变化,因此实际上看起来这种优化是正确的。您能验证一下吗,也许指出您到底期望在哪些地方使用不同的样式?