typescript - Angular 2 : How to set-up a @Input for an inline style? -
i have component needs display random values, randomly generated , pushed in trough @input
bindings troughout template. far good, can't seem link @input
style image url so:
<a routerlink="{{nextlink}}" routerlinkactive="active" class="nav-link next" style="background: url('assets/images/{{nextbg}}');">
where {{nextbg}}
file extension e.g. next.jpg
=> this aiming for.
i tried using [ngstyle]
, [style.background-image]
without luck.
here code:
import { component, input } '@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; }
try following using [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>
or perhaps utilize oninit lifecycle hook build out urls within component reference @input() prevbg: string;
.
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})`; }
i've created plunker. if click on 1 of hero's you'll see placehold.it image being loaded in div.foo
. should load local asset url in same say.
hopefully helps!
Comments
Post a Comment