| @@ -0,0 +1,44 @@ | |||||
| /* HeroesComponent's private CSS styles */ | |||||
| .heroes { | |||||
| margin: 0 0 2em 0; | |||||
| list-style-type: none; | |||||
| padding: 0; | |||||
| width: 15em; | |||||
| } | |||||
| .heroes li { | |||||
| cursor: pointer; | |||||
| position: relative; | |||||
| left: 0; | |||||
| background-color: #EEE; | |||||
| margin: .5em; | |||||
| padding: .3em 0; | |||||
| height: 1.6em; | |||||
| border-radius: 4px; | |||||
| } | |||||
| .heroes li:hover { | |||||
| color: #607D8B; | |||||
| background-color: #DDD; | |||||
| left: .1em; | |||||
| } | |||||
| .heroes li.selected { | |||||
| background-color: #CFD8DC; | |||||
| color: white; | |||||
| } | |||||
| .heroes li.selected:hover { | |||||
| background-color: #BBD8DC; | |||||
| color: white; | |||||
| } | |||||
| .heroes .badge { | |||||
| display: inline-block; | |||||
| font-size: small; | |||||
| color: white; | |||||
| padding: 0.8em 0.7em 0 0.7em; | |||||
| background-color:#405061; | |||||
| line-height: 1em; | |||||
| position: relative; | |||||
| left: -1px; | |||||
| top: -4px; | |||||
| height: 1.8em; | |||||
| margin-right: .8em; | |||||
| border-radius: 4px 0 0 4px; | |||||
| } | |||||
| @@ -1,7 +1,18 @@ | |||||
| <h2>{{hero.name | uppercase}} Details</h2> | |||||
| <div><span>id: </span>{{hero.id}}</div> | |||||
| <div> | |||||
| <label>name: | |||||
| <input [(ngModel)]="hero.name" placeholder="name"/> | |||||
| </label> | |||||
| <h2>My Heroes</h2> | |||||
| <ul class="heroes"> | |||||
| <li *ngFor="let hero of heroes" | |||||
| [class.selected]="hero === selectedHero" | |||||
| (click)="onSelect(hero)"> | |||||
| <span class="badge">{{hero.id}}</span> {{hero.name}} | |||||
| </li> | |||||
| </ul> | |||||
| <div *ngIf="selectedHero"> | |||||
| <h2>{{selectedHero.name | uppercase}} Details</h2> | |||||
| <div><span>id: </span>{{selectedHero.id}}</div> | |||||
| <div> | |||||
| <label>name: | |||||
| <input [(ngModel)]="selectedHero.name" placeholder="name"/> | |||||
| </label> | |||||
| </div> | |||||
| </div> | </div> | ||||
| @@ -1,5 +1,6 @@ | |||||
| import { Component, OnInit } from '@angular/core'; | |||||
| import {Hero} from './hero'; | |||||
| import {Component, OnInit} from '@angular/core'; | |||||
| import {Hero} from '../hero'; | |||||
| import {HEROES} from '../mock-heroes'; | |||||
| @Component({ | @Component({ | ||||
| selector: 'app-heroes', | selector: 'app-heroes', | ||||
| @@ -8,14 +9,22 @@ import {Hero} from './hero'; | |||||
| }) | }) | ||||
| export class HeroesComponent implements OnInit { | export class HeroesComponent implements OnInit { | ||||
| constructor() { | |||||
| } | |||||
| hero: Hero = { | hero: Hero = { | ||||
| id: 1, | id: 1, | ||||
| name: 'Windstorm' | name: 'Windstorm' | ||||
| }; | }; | ||||
| constructor() { } | |||||
| heroes = HEROES; | |||||
| selectedHero: Hero; | |||||
| ngOnInit() { | ngOnInit() { | ||||
| } | } | ||||
| onSelect(hero: Hero) { | |||||
| this.selectedHero = hero; | |||||
| } | |||||
| } | } | ||||
| @@ -0,0 +1,14 @@ | |||||
| import { Hero } from './hero'; | |||||
| export const HEROES: Hero[] = [ | |||||
| { id: 11, name: 'Dr Nice' }, | |||||
| { id: 12, name: 'Narco' }, | |||||
| { id: 13, name: 'Bombasto' }, | |||||
| { id: 14, name: 'Celeritas' }, | |||||
| { id: 15, name: 'Magneta' }, | |||||
| { id: 16, name: 'RubberMan' }, | |||||
| { id: 17, name: 'Dynama' }, | |||||
| { id: 18, name: 'Dr IQ' }, | |||||
| { id: 19, name: 'Magma' }, | |||||
| { id: 20, name: 'Tornado' } | |||||
| ]; | |||||