我有一个需要显示随机值的组件,这些值将通过一些@Input
绑定随机生成并通过模板推送。到目前为止一切顺利,但我似乎无法将@Input
链接到样式图像 url,如下所示:
<a routerLink="{{nextLink}}" routerLinkActive="active" class="nav-link next" style="background: url('assets/images/{{nextBg}}');">
其中{{nextBg}}
是一个带有扩展名的文件,例如next.jpg
=>这就是我的目标。
我尝试使用[ngStyle]
和[style.background-image]
但没有运气。
这是我的代码:
import { Component, Input } from '@angular/core';
@Component({
moduleId: module.id,
selector: 'prev-next',
template: `
<nav class="prev-next-nav">
<a routerLink="{{prevLink}}" routerLinkActive="active" class="nav-link prev" style="background: url('assets/images/tesla.jpg');">
<span class="link-dir">Previous project</span>
<span class="link-title"><i class="icon icon-arrowright"></i> {{prevName}}</span>
</a>
<a routerLink="{{nextLink}}" routerLinkActive="active" class="nav-link next" style="background: url('assets/images/food.jpg');">
<span class="link-dir">Next project</span>
<span class="link-title">{{nextName}} <i class="icon icon-arrowright"></i></span>
</a>
</nav>
`
})
export class PrevNextComponent {
// Previous link inputs
@Input() prevBg: string;
@Input() prevName: string;
@Input() prevLink: string;
// Next link inputs
@Input() nextBg: string;
@Input() nextName: string;
@Input() nextLink: string;
}
使用[ngStyle]
尝试以下操作:
<a routerLink="{{prevLink}}" routerLinkActive="active" class="nav-link prev" [ngStyle]="{'background-image': 'url(assets/images/' + prevBg + ')'}">
<span class="link-dir">Previous project</span>
<span class="link-title"><i class="icon icon-arrowright"></i> {{prevName}}</span>
</a>
或者,您可以利用 OnInit 生命周期挂钩来构建组件中引用@Input() prevBg: string;
的 URL。
.HTML
<a routerLink="{{prevLink}}" routerLinkActive="active" class="nav-link prev" [ngStyle]="{'background-image': prevBgUrl}">
<span class="link-dir">Previous project</span>
<span class="link-title"><i class="icon icon-arrowright"></i> {{prevName}}</span>
</a>
TS
ngOnInit() {
this.nextBgUrl = `url(assets/images/${this.nextBg})`;
}
我创建了一个 plunker。如果您单击其中一个英雄,您将看到 placehold.it 图像正在div.foo
中加载。您应该以相同的方式加载本地资产 URL。
希望对您有所帮助!