Winkel-2 ein-und ausblenden von Elementen über *ngIf mit boolean
Möchte ich zeigen und verstecken ein element mit einer Schaltfläche, die sich in einer anderen Komponente.
Also ich habe ein Armaturenbrett mit einem Betrag von Kammern und einen header.
HTML-von DashboardComponent mit app-header und app-Kammer:
<app-header></app-header>
<div class="container">
<div class="row">
<app-chamber [kamers]="kamers"></app-chamber>
</div>
</div>
Habe ich diese HTML-wth *ngIf in meinem 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>
In der HeaderComponent ich habe eine Schaltfläche, muss zum ein-und ausblenden des Elementes :
@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();
}
}
dann meine ChamberComponent code:
@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;
}
}
So, wenn ich auf die Schaltfläche klicke, ändert sich der Wert (ich habe protokolliert dies in der Konsole), aber die Ansicht nicht aktualisiert..
Wenn ich ein button in meine ChamberComponent, ruft die toggleId () - Funktion die Ansicht keine reveice ein update und das element ein-oder ausgeblendet ist.
Aber ich muss Umschalten über eine Taste auf meinem Kopf.
Das Duplikat wurde über "dies" in eine callback-Umfang. Aber mein code sollte die Arbeit nach, Beispiel. diese.showId nicht funktioniert..
Wenn es nicht angezeigt oder verborgen, und Sie haben keine anderen Inhalte gibt, sind Sie sicher, dass die Bedingung
*ngIf="kamer.patient == null"
erfüllt ist?Das ist das problem, und dies sollte sehr viel Hinzugefügt werden zu der Frage es ist sehr wichtig Informationen! So setzen Sie alle zugehörigen code posten bitte! 🙂
Ich habe aktualisiert die Frage, vielen Dank!
InformationsquelleAutor Sytham | 2016-12-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Plunker
Gab es eine kleine Diskrepanz zwischen der
@Input() kamers
und die Vorlage*ngIf="kamer.patient == null"
.kamer
.Vorlage HTML
Komponente
Update (1) - Plunker (1)
Verwenden
@ViewChild
Verweis zu einer Kind-Komponente, die Funktionen verwenden ViewChild
@ViewChild('child') child;
in der übergeordneten Komponente<button (click)="child.toggleId()">Toggle</button>
Übergeordneten Komponente
Kind Vorlage
Kind Komponente
Update (2) - Plunker (2)
Verwenden
@Output()
+EventEmitter
Erweitern die vorherigen Einstellungen zu verwenden, Geschwister-Komponente können Sie
ViewChild
Geschwister-Komponente
Übergeordneten Komponente
Kind Vorlage
Kind Komponente
Vielleicht die beste/einfachste Lösung ist einfach den header in der dashboard-html und Mach es so wie du gesagt hast?
Okay, ich denke ich habe es für die Geschwister setup.. lass es mich wissen, wenn Sie etwas anderes benötigen, Dank!
Sie sir, sind ein held!
Vielen Dank, bin froh, dass es geholfen hat!
InformationsquelleAutor adriancarriger