typescript - Visa inte .html-komponenten förrän alla funktioner/data har laddats. Angular 2
Jag har två metoder inuti ngOnInit som visas här:
ngOnInit() {
this.getBugId(); // Get Id from URL
this.getBugInformation(); // Get the bug information from firebase, the bug that matches the ID passed in
}
getBugId(): hämtar i princip Id från URL:en och tilldelar det till en lokal variabel.
getBugInformation(): anropar en tjänst, ansluter till Firebase och hämtar en enskild post som matchar det bugId jag har skickat in, och fyller en klass som heter Bug, detta fungerar.
// Anropar en metod på en tjänst som returnerar ett löfte.
getBugInformation() {
this.bugService
.getBug3(this.bugId)
.then(bug => {
this.bugDetail = bug;
this.configureForm();
});
}
Problemet jag har är this.configureForm(); detta fyller i princip fälten i FormControls som sedan visas på .html-sidan, problemet är att min .html-sida visas innan funktionerna har slutförts vilket resulterar i att formGroup förväntar sig en FormGroup-instans. Vänligen skicka in en. visas i konsolen som ett fel, min fråga är. Hur kan jag förhindra att .html-sidan visas tills,
this.getBugInformation(); har slutfört this.configureForm(); har slutfört.
Tack på förhand
Svar #1
Du anropar två funktioner. För att lösa detta problem bör du skapa en boolean
display: boolean = false;
nu i funktionen this.configureForm(); när ditt formulär är klart, ställ in this.display=true;
i din html-del, placera alla dina formulär som du vill visa senare i ett div-block med *ngIf-strukturdirektiv på detta sätt
<div *ngIf="display">
...... your code here
</div>
tack.
