26 lines
		
	
	
		
			724 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			26 lines
		
	
	
		
			724 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | // #docplaster
 | ||
|  | // #docregion
 | ||
|  | import {OpaqueToken} from 'angular2/core'; | ||
|  | import {Hero}        from './hero'; | ||
|  | import {HeroService} from './hero.service'; | ||
|  | 
 | ||
|  | // #docregion runners-up
 | ||
|  | export const RUNNERS_UP = new OpaqueToken('RunnersUp'); | ||
|  | // #docregion runners-up
 | ||
|  | 
 | ||
|  | // #docregion factory-synopsis
 | ||
|  | export function runnersUpFactory(take: number) { | ||
|  |   return (winner: Hero, heroService: HeroService): string => { | ||
|  |     /* ... */ | ||
|  | // #enddocregion factory-synopsis
 | ||
|  |     return heroService | ||
|  |           .getAllHeroes() | ||
|  |           .filter((hero) => hero.name !== winner.name) | ||
|  |           .map(hero => hero.name) | ||
|  |           .slice(0, Math.max(0, take)) | ||
|  |           .join(', '); | ||
|  | // #docregion factory-synopsis
 | ||
|  |   }; | ||
|  | }; | ||
|  | // #enddocregion factory-synopsis
 |