26 lines
		
	
	
		
			724 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			724 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| // #docplaster
 | |
| // #docregion
 | |
| import {OpaqueToken} from '@angular/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
 |