2015-12-21 5 views
25

C'è un modo per * ngPer eseguire un ciclo un numero definito di volte invece di dover sempre scorrere su un array?Way to * ngPer il ciclo definito numero di volte invece di ripetere su array?

Ad esempio, voglio una lista da ripetere 5 volte, il ciclo dovrebbe essere qualcosa del genere in C#;

for (int i = 0; i < 4; i++){ 

} 

risultato desiderato:

<ul> 
    <li><span>1</span></li> 
    <li><span>2</span></li> 
    <li><span>3</span></li> 
    <li><span>4</span></li> 
    <li><span>5</span></li> 
</ul> 
+1

un metodo è come detto da @TGH e il secondo è possibile utilizzare il ciclo for come menzionato in questione, quindi immettere il valore di [i] nell'array vuoto e avviare * ngFor su quell'array anche questo è possibile. puoi scegliere uno di questi due modi. –

risposta

18

in un componente, è possibile definire una serie di numero (ES6) come descritto di seguito:

export class SampleComponent { 
    constructor() { 
    this.numbers = Array(5).fill(0).map((x,i)=>i); 
    } 
} 

Vedere questo link per la creazione matrice: Tersest way to create an array of integers from 1..20 in JavaScript.

È quindi possibile iterare su questo array con ngFor:

@View({ 
    template: ` 
    <ul> 
     <li *ngFor="let number of numbers">{{number}}</li> 
    </ul> 
    ` 
}) 
export class SampleComponent { 
    (...) 
} 

O poco:

@View({ 
    template: ` 
    <ul> 
     <li *ngFor="let number of [0,1,2,3,4]">{{number}}</li> 
    </ul> 
    ` 
}) 
export class SampleComponent { 
    (...) 
} 

Spero che ti aiuta, Thierry

Edit: Fisso la dichiarazione di riempimento e il modello sintassi.

+3

Penso che 'Array (5) .fill() ...' non abbia uno 0. Dovrebbe essere 'Array (5) .fill (0)'. Dai documenti https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/fill – brijmcq

+1

Il numero "#" dovrebbe essere "let number' –

+0

Puoi anche usare' Array.from (Array (5)). Map ((x, i) => i); 'per ottenere lo stesso senza dover usare' .fill (0) ' – kernel

Problemi correlati