2016-12-20 9 views
9

Próbuję dynamicznie utworzyć kilka elementów za pomocą ngFor, a następnie ustawić najwyższy atrybut w zależności od narysowanej kwoty.Przyrost [ngStyle] attr za pomocą indeksu ngFor?

Zastanawiam się, czy istnieje sposób dostępu do indeksu ngFor na tym samym div dla ngStyle? to znaczy;

<div class="row" *ngFor="let d of data; let i = index;" [ngStyle]="{'top': mrTop*i}" >

Jeśli nie, wszelkie sugestie jak mogę osiągnąć coś podobnego?

Wolałbym unikać dodawania kolejnego elementu div podobnego;

<div *ngFor="let d of data; let i = index;"> 
    <div class="testCase" [ngStyle]="{'top': mrTop*i}">{{d}}</div> 
</div> 

(Chociaż to nie działa albo)

Zastanawiam się, czy istnieje sposób, aby dołączyć detektor zdarzenia do zdarzenia pętli tak, że za kulisami mogę zwiększamy mrTop zmienną dla każdego div narysowany?

W każdym razie nie jestem pewien, jak najlepiej się do tego podejść i mając nadzieję na jakąś pomoc/poradę.

Plunk here

+0

Czy to próbował? Nie rozumiem, dlaczego to nie zadziałałoby. –

+0

@ GünterZöchbauer Mam, ale wydaje się, że nie działa. Chyba że coś przeoczyłem - dodałem pluna jako przykład demonstrujący przypadek testowy. – since095

+0

Tęskniłem za tym łączem (jak zawsze, jeśli nie są podkreślane) | - / –

Odpowiedz

6

zmiennej mrTop jest ciągiem znaków, nie można pomnożyć.

Spróbuj:

public mrTop = 10; 

a następnie

<div [ngStyle]="{'top': mrTop*i + '%'}"> 

lub

<div [style.top.%]="mrTop*i"> 
4

Istnieje kilka błędów

'10%' * i // not valid number 

public mrTop: 10; // defines mrTop as of type 10 which doesn't make sense 
// it should be public mrTop= 10; 

styl Ng może wyglądać

[ngStyle]="{'top': mrTop * i + '%'}" 

Plunker example

Powiązane problemy