我有一个简单的ngFor循环,它还可以跟踪当前索引。我想把索引值存储在一个属性中,这样我就可以打印它了。

我基本上有这个:

<ul *ngFor="#item of items; #i = index" data-index="#i">
    <li>{{item}}</li>
</ul>

我想将#I的值存储在属性数据索引中。我尝试了几种方法,但都没有奏效。

我这里有一个演示:http://plnkr.co/edit/EXpOKAEIFlI9QwuRcZqp?p=preview

如何将索引值存储在数据索引属性中?


当前回答

我认为它之前已经得到了回答,但如果您正在填充无序列表,那么*ngFor将出现在您想要重复的元素中。所以它应该是insdide<li>。此外,Angular2现在使用let来声明变量。

<ul>
    <li *ngFor="let item of items; let i = index" [attr.data-index]="i">     
               {{item}}
    </li>
</ul>

其他回答

其他答案是正确的,但您可以完全省略[attr.data索引],只使用

<ul>
    <li *ngFor="let item of items; let i = index">{{i + 1}}</li>
</ul

带laravel分页

file.component.ts file

    datasource: any = {
        data: []
    }

    loadData() {
        this.service.find(this.params).subscribe((res: any) => {
            this.datasource = res;
        });
    }

html file

   <tr *ngFor="let item of datasource.data; let i = index">
       <th>{{ datasource.from + i }}</th>
   </tr>

我认为它之前已经得到了回答,但如果您正在填充无序列表,那么*ngFor将出现在您想要重复的元素中。所以它应该是insdide<li>。此外,Angular2现在使用let来声明变量。

<ul>
    <li *ngFor="let item of items; let i = index" [attr.data-index]="i">     
               {{item}}
    </li>
</ul>

获取API调用

    @Injectable({
      providedIn: 'root',
    })
    export class ApiService {

      private readonly postsSubject = new BehaviorSubject<any>(null);
      readonly postsResult$ = this.postsSubject.asObservable();

      get postsResult(): any {
        return this.postsSubject.getValue();
      }
      set postsResult(posts: any) {
        this.postsSubject.next(gifRes);
      }
    
      constructor(private http: HttpClient) {}
        getSearchResult(): Observable<any> {
            this.postsResult = this.http.get<any>('https://jsonplaceholder.typicode.com/posts');
          }
}

用于获取postResult的索引

<div *ngFor="let post of apiService.postsResult$ | async; let i = index">
{{i}} - {{post.title}}
<div>

您可以直接使用[attr.dataindex]将索引保存到Angular版本2和更高版本中提供的数据索引属性。

    <ul*ngFor="let item of items; let i = index" [attr.data-index]="i">
         <li>{{item}}</li>
    </ul>