Angular 8 ngStyle 有时在循环内不起作用
Angular 8 ngStyle sometimes does not work inside a loop
我在 Angular 8.
中有以下代码
<mat-grid-list cols="5" rowHeight="16:9" gutterSize="1%">
<mat-grid-tile *ngFor="let m of media; index as i">
<div class="media-cards" [ngStyle]="{'background-image': 'url(' + m.thumbnail + ')'}"></div>
</mat-grid-tile>
</mat-grid-list>
由于一些奇怪的未知原因,它没有在循环中生成的某些元素中添加 background-image
样式。 m.thumbnail
是有效的 URL,可用于 media
对象的每个元素。
这是它的外观(缺少背景图片):
生成的代码如下所示:
您可以在上图中看到第二个元素缺少 background-image
样式。
为什么会这样?问题出在哪里?
原来有些 URL 带有括号 (... Fitness%20(10).JPG ...)。所以,当我使用样式 'background-image': 'url(__the_url__)'
时,它会因为括号而中断。看起来 Angular 可能会在添加到元素之前验证样式。由于这些规则因括号而无法验证,因此不会将这些规则添加到元素中。
所以,我用单引号将 URL 括起来,使其成为字符串文字,这样圆括号就不会产生问题,并且可以正常工作。它奏效了。
{'background-image': 'url(\'' + m.thumbnail + '\')'}
我在 Angular 8.
中有以下代码<mat-grid-list cols="5" rowHeight="16:9" gutterSize="1%">
<mat-grid-tile *ngFor="let m of media; index as i">
<div class="media-cards" [ngStyle]="{'background-image': 'url(' + m.thumbnail + ')'}"></div>
</mat-grid-tile>
</mat-grid-list>
由于一些奇怪的未知原因,它没有在循环中生成的某些元素中添加 background-image
样式。 m.thumbnail
是有效的 URL,可用于 media
对象的每个元素。
这是它的外观(缺少背景图片):
生成的代码如下所示:
您可以在上图中看到第二个元素缺少 background-image
样式。
为什么会这样?问题出在哪里?
原来有些 URL 带有括号 (... Fitness%20(10).JPG ...)。所以,当我使用样式 'background-image': 'url(__the_url__)'
时,它会因为括号而中断。看起来 Angular 可能会在添加到元素之前验证样式。由于这些规则因括号而无法验证,因此不会将这些规则添加到元素中。
所以,我用单引号将 URL 括起来,使其成为字符串文字,这样圆括号就不会产生问题,并且可以正常工作。它奏效了。
{'background-image': 'url(\'' + m.thumbnail + '\')'}