add onclick and ngif

This commit is contained in:
kiwi 2025-03-17 19:13:53 +01:00
parent aa5c652cdf
commit 045ebd07a7
3 changed files with 83 additions and 4 deletions

View File

@ -9,9 +9,18 @@
<h2>My Heroes</h2>
<ul class="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="name">{{hero.name}}</span>
</button>
</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>

View File

@ -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;
}

View File

@ -1,13 +1,13 @@
import { Component } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { NgFor } from '@angular/common';
import { NgFor, NgIf } from '@angular/common';
import { Hero } from '../hero'
import { HEROES } from '../mock-heroes';
@Component({
selector: 'app-heroes',
imports: [FormsModule, NgFor],
imports: [FormsModule, NgFor, NgIf],
templateUrl: './heroes.component.html',
styleUrl: './heroes.component.scss'
})
@ -17,4 +17,8 @@ export class HeroesComponent {
name: 'Windstorm'
};
heroes = HEROES;
selectedHero?: Hero;
onSelect(hero: Hero): void {
this.selectedHero = hero;
}
}