Je veux afficher et masquer un élément en utilisant un bouton qui se trouve dans un autre composant.
J'ai donc un tableau de bord avec une quantité de chambres et un en-tête.
HTML du DashboardComponent avec app-header et app-chamber :
<app-header></app-header>
<div class="container">
<div class="row">
<app-chamber [kamers]="kamers"></app-chamber>
</div>
</div>
J'ai ce HTML avec le *ngIf dans mon ChamberComponent :
<div class="col-sm-6 col-md-4 col-lg-3 cardcol" *ngFor="let kamer of kamers; let i = index">
<md-card class="chamber wit" *ngIf="kamer.patient == null">
<p *ngIf="showId">{{kamer.id}}</p>
</md-card>
</div>
Dans le HeaderComponent, j'ai un bouton qui doit afficher et masquer l'élément :
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
@Input() aList;
dashboardComponent:DashboardComponent;
chamberComponent:ChamberComponent;
constructor(dashboardComponent: DashboardComponent, chamberComponent:ChamberComponent) {
this.dashboardComponent = dashboardComponent;
this.chamberComponent = chamberComponent;
}
ngOnInit() {
}
// THIS GETS CALLED BY A BUTTON CLICK
toggleId(){
this.chamberComponent.toggleId();
}
}
puis mon code ChamberComponent :
@Component({
selector: 'app-chamber',
templateUrl: './chamber.component.html',
styleUrls: ['./chamber.component.css']
})
export class ChamberComponent implements OnInit {
@Input() kamers;
showId:boolean;
constructor() {
this.showId=false;
}
ngOnInit() {
}
toggleId = () => {
this.showId = !this.showId;
}
}
Ainsi, lorsque je clique sur le bouton, la valeur change (j'ai enregistré cela dans la console) mais la vue n'est pas mise à jour
Lorsque je place dans mon ChamberComponent un bouton qui appelle la fonction toggleId(), la vue est mise à jour et l'élément est affiché ou masqué.
Mais j'ai besoin de le faire basculer à partir d'un bouton sur mon en-tête.