parent
							
								
									fb2773b8f3
								
							
						
					
					
						commit
						ccff17599a
					
				| @ -26,6 +26,8 @@ import {BaseException} from "../../facade/exceptions"; | |||||||
|  * `NgFor` provides several exported values that can be aliased to local variables: |  * `NgFor` provides several exported values that can be aliased to local variables: | ||||||
|  * |  * | ||||||
|  * * `index` will be set to the current loop iteration for each template context. |  * * `index` will be set to the current loop iteration for each template context. | ||||||
|  |  * * `first` will be set to a boolean value indicating whether the item is the first one in the | ||||||
|  |  *   iteration. | ||||||
|  * * `last` will be set to a boolean value indicating whether the item is the last one in the |  * * `last` will be set to a boolean value indicating whether the item is the last one in the | ||||||
|  *   iteration. |  *   iteration. | ||||||
|  * * `even` will be set to a boolean value indicating whether this item has an even index. |  * * `even` will be set to a boolean value indicating whether this item has an even index. | ||||||
| @ -126,6 +128,7 @@ export class NgFor implements DoCheck { | |||||||
| 
 | 
 | ||||||
|     for (var i = 0, ilen = this._viewContainer.length; i < ilen; i++) { |     for (var i = 0, ilen = this._viewContainer.length; i < ilen; i++) { | ||||||
|       var viewRef = <EmbeddedViewRef>this._viewContainer.get(i); |       var viewRef = <EmbeddedViewRef>this._viewContainer.get(i); | ||||||
|  |       viewRef.setLocal('first', i === 0); | ||||||
|       viewRef.setLocal('last', i === ilen - 1); |       viewRef.setLocal('last', i === ilen - 1); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -298,6 +298,25 @@ export function main() { | |||||||
|              }); |              }); | ||||||
|        })); |        })); | ||||||
| 
 | 
 | ||||||
|  |     it('should display first item correctly', | ||||||
|  |        inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => { | ||||||
|  |          var template = | ||||||
|  |              '<div><copy-me template="ngFor: var item of items; var isFirst=first">{{isFirst.toString()}}</copy-me></div>'; | ||||||
|  | 
 | ||||||
|  |          tcb.overrideTemplate(TestComponent, template) | ||||||
|  |              .createAsync(TestComponent) | ||||||
|  |              .then((fixture) => { | ||||||
|  |                fixture.debugElement.componentInstance.items = [0, 1, 2]; | ||||||
|  |                fixture.detectChanges(); | ||||||
|  |                expect(fixture.debugElement.nativeElement).toHaveText('truefalsefalse'); | ||||||
|  | 
 | ||||||
|  |                fixture.debugElement.componentInstance.items = [2, 1]; | ||||||
|  |                fixture.detectChanges(); | ||||||
|  |                expect(fixture.debugElement.nativeElement).toHaveText('truefalse'); | ||||||
|  |                async.done(); | ||||||
|  |              }); | ||||||
|  |        })); | ||||||
|  | 
 | ||||||
|     it('should display last item correctly', |     it('should display last item correctly', | ||||||
|        inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => { |        inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => { | ||||||
|          var template = |          var template = | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user