krv*_*krv 1 javascript angular2-directives angular
我有以下代码显示项目
<ul>
<li *ngFor="#item of items">{{item}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
现在,items对象是我对API调用的结果.
我们假设这是以下代码.
this.http.get('/api/items').subscribe(data => {
this.items= data['results'];
});
Run Code Online (Sandbox Code Playgroud)
我想要实现的是我希望第三个项目是自定义项目,然后正常呈现以下项目.
怎么能得到这个.
谢谢
您可以*ngFor通过使用跟踪索引,let i = index然后可以使用a *ngIf在索引位于3时执行操作.请参阅下文,我使用<pre></pre>因为我不知道是什么item.
<ul>
<li *ngFor="let item of items; let i = index">
<pre *ngIf="i !== 2; then thenBlock else elseBlock"></pre>
</li>
</ul>
<ng-template #thenBlock>{{item}}</ng-template>
<ng-template #elseBlock>//Display something for item 3</ng-template>
Run Code Online (Sandbox Code Playgroud)
你的HttpGet是错的,我假设你正在使用新的HttpClient,它应该是:
this.http.get<any>('/api/items').subscribe((data: any) => {
this.items = data;
});
Run Code Online (Sandbox Code Playgroud)
如果它是旧的Http:
this.http.get('/api/items')
.map((res: Response) => res.json())
.subscribe((data: any) => {
this.items = data;
});
Run Code Online (Sandbox Code Playgroud)
根据您的评论,您实际上需要类似的东西:
<ul>
<ng-container *ngFor="let item of items; let i = index">
<li>{{item}}</li>
<li *ngIf="i === 2">...</li>
</ng-container>
</ul>
Run Code Online (Sandbox Code Playgroud)
请注意容器上的循环,而不是元素本身,因此我们可以在每个步骤中拥有不同数量的元素,而不会破坏布局。