Angular 角4无限阵列环

Angular 角4无限阵列环,angular,typescript,Angular,Typescript,我想使用*ngFor并多次重复我的数组元素。像这样: 在组件中: letters: Array<string> = [a, b, c, d, e]; currentLetter: string= c; 在模板中: <div *ngFor="let letter of letters" (click)="currentLetter = letter">{{letter}}</div> 我想在render中看到这样的东西: a、 b,c,d,e 点击“a”后:

我想使用*ngFor并多次重复我的数组元素。像这样:

在组件中:

letters: Array<string> = [a, b, c, d, e];
currentLetter: string= c;
在模板中:

<div *ngFor="let letter of letters" (click)="currentLetter = letter">{{letter}}</div>
我想在render中看到这样的东西:

a、 b,c,d,e

点击“a”后:

d、 e,a,b,c

点击“e”后:

c、 d,e,a,b

有什么想法吗 谢谢你的帮助

只需在ngIf中使用两个列表:第一个列表呈现currentLetter之前的字母或currentLetter本身,而第二个列表呈现currentLetter之后的字母

试试这个,它会解决你的问题

<ng-container *ngFor="let letter of letters; index as i">
  <button *ngIf="i>=letters.indexOf(currentLetter)" (click)="currentLetter = letter">{{letter}}</button>
</ng-container>
<ng-container *ngFor="let letter of letters; index as i">
  <button *ngIf="i<letters.indexOf(currentLetter)" (click)="currentLetter = letter">{{letter}}</button>
</ng-container>
 <div *ngFor="let letter of letters" (click)="myMethod(letter)">{{letter}}
</div>


myMethod(selectedLetter){
    let postLen = 3; // configurable
    let i=0, len =str1.length;
    let foundFlag = false;
    let arr1 = [], arr2 = [], arr3 = [];
    for(;i<len;i++){
         if(str1[i] == selectedLetter){
             for(k=0;k<postLen && (i+k)< len ; k++){
                arr1.push(str1[i+k]);
                i++;
             }
             foundFlag = true;
         }else if(!foundFlag){
                arr2.push(str1[i]);
         }else{
                arr3.push(str1[i]);
         }

    }

    this.letters = arr3.concat(arr2);
    this.letters = this.letters.concat(arr1);   

}