add onclick and ngif
This commit is contained in:
parent
aa5c652cdf
commit
045ebd07a7
|
@ -9,9 +9,18 @@
|
||||||
<h2>My Heroes</h2>
|
<h2>My Heroes</h2>
|
||||||
<ul class="heroes">
|
<ul class="heroes">
|
||||||
<li *ngFor="let hero of heroes">
|
<li *ngFor="let hero of heroes">
|
||||||
<button type="button">
|
<button [class.selected]="hero === selectedHero" type="button" (click)="onSelect(hero)">
|
||||||
<span class="badge">{{hero.id}}</span>
|
<span class="badge">{{hero.id}}</span>
|
||||||
<span class="name">{{hero.name}}</span>
|
<span class="name">{{hero.name}}</span>
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<div *ngIf="selectedHero">
|
||||||
|
<h2>{{selectedHero.name}} Details</h2>
|
||||||
|
<div>id: {{selectedHero.id}}</div>
|
||||||
|
<div>
|
||||||
|
<label for="hero-name">Hero name: </label>
|
||||||
|
<input id="hero-name" [(ngModel)]="selectedHero.name" placeholder="name">
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,66 @@
|
||||||
|
/* HeroesComponent's private CSS styles */
|
||||||
|
.heroes {
|
||||||
|
margin: 0 0 2em 0;
|
||||||
|
list-style-type: none;
|
||||||
|
padding: 0;
|
||||||
|
width: 15em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heroes li {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heroes button {
|
||||||
|
flex: 1;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
left: 0;
|
||||||
|
background-color: #EEE;
|
||||||
|
margin: .5em;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
align-items: stretch;
|
||||||
|
height: 1.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heroes button:hover {
|
||||||
|
color: #2c3a41;
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
left: .1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heroes button:active {
|
||||||
|
background-color: #525252;
|
||||||
|
color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heroes button.selected {
|
||||||
|
background-color: black;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heroes button.selected:hover {
|
||||||
|
background-color: #505050;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heroes button.selected:active {
|
||||||
|
background-color: black;
|
||||||
|
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;
|
||||||
|
margin-right: .8em;
|
||||||
|
border-radius: 4px 0 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heroes .name {
|
||||||
|
align-self: center;
|
||||||
|
}
|
|
@ -1,13 +1,13 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import { NgFor } from '@angular/common';
|
import { NgFor, NgIf } from '@angular/common';
|
||||||
import { Hero } from '../hero'
|
import { Hero } from '../hero'
|
||||||
import { HEROES } from '../mock-heroes';
|
import { HEROES } from '../mock-heroes';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-heroes',
|
selector: 'app-heroes',
|
||||||
imports: [FormsModule, NgFor],
|
imports: [FormsModule, NgFor, NgIf],
|
||||||
templateUrl: './heroes.component.html',
|
templateUrl: './heroes.component.html',
|
||||||
styleUrl: './heroes.component.scss'
|
styleUrl: './heroes.component.scss'
|
||||||
})
|
})
|
||||||
|
@ -17,4 +17,8 @@ export class HeroesComponent {
|
||||||
name: 'Windstorm'
|
name: 'Windstorm'
|
||||||
};
|
};
|
||||||
heroes = HEROES;
|
heroes = HEROES;
|
||||||
|
selectedHero?: Hero;
|
||||||
|
onSelect(hero: Hero): void {
|
||||||
|
this.selectedHero = hero;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue