typescript - Angular 2 vänta tills tjänstens resultat kommer
Jag har ett enkelt sökformulär. Det jag försöker göra är:
- ange ett nummer i inmatningsfältet
- klicka på sökknappen
- tjänsten hittar objektet och returnerar det tillbaka till formuläret
Detta fungerar men bara om jag klickar två gånger på sökknappen. Problemet är att jag tror att de hittade uppgifterna inte har kommit från tjänsten än när jag försöker arbeta med dem.
App
@Component({
template: `
<input pInputText #inputNr"/>
<button pButton type="button" (click)="onSearch(inputNr.value)"></button>
`
})
constructor(private myService: MyService) { }
ngOnInit() {
this.selectedInstelling = new Instelling();
}
onSearch(nummer) {
this.myService.getByNummer(nummer)
.then(i => this.selectedInstelling = i);
......... // I want to do some work here when I get the data
console.log(this.selectedInstelling); // First Click: Object { vorms: Array[0] }
// Second Click: Object { id: 1, naam: "Provincia...... }
}
Service
getByNummer(nummer: string) {
return this.http.get('my json file')
.toPromise()
.then(res => <Instelling[]> res.json().filter(i => i.inummer === nummer))
.then(data => {
return data[0];
});
}
Hur kan jag ladda objektet (data) först och sedan börja arbeta med det?
Svar #1
Du måste använda den mer detaljerade notationen i then-anropet:
onSearch(nummer) {
this.myService.getByNummer(nummer).then((i: Instelling) => {
this.selectedInstelling = i;
//do whatever you want in here...
});
}
