Ich bin neu in Angular und habe Probleme beim Binden von Daten von einem Datendienst an FormGroup. Ich bin in der Lage, auf die Eigenschaften in der Ansicht zugreifen, aber gut, aber die gleichen Eigenschaften sind undefined innerhalb der Controller, wo ich versuche, die Formulargruppe zu erstellen und die ersten Formularsteuerwerte festlegen.Zugriff auf Angular 2-Eigenschaften innerhalb des Controllers nicht möglich
Modell
export class Dog {
constructor(
id: number,
name: string,
age: number
) { }
}
Dienst
getDog(): Promise<Dog> {
return this.http.get(this.baseUrl + '/api/endpoint').toPromise().then(res.json());
}
Component ich dann wie diesen Dienst aus meiner Komponente nennen:
export class DogComponent implements OnInit {
form: FormGroup;
dog: Dog;
constructor(private service: DogService, private fb: FormBuilder) { }
ngOnInit(): void {
this.getData();
this.createForm();
}
getData() {
this.service.getDog().then(res => this.dog = res);
}
createForm() {
this.form = this.fb.group({
id: [this.dog.id],
name: [this.dog.name],
age: [this.dog.age]
});
}
}
Ansicht
<form [formGroup]="form">
<input formControlName="name" />
<input formControlName="age" />
</form>
Ich kann den Eingangswert wie [Wert] = „name“ setzen, aber ich möchte in der Lage sein, die in dem Create Verfahren einzustellen. Irgendwelche Ideen, warum die Eigenschaften für die Ansicht, aber nicht innerhalb des Controllers verfügbar sind
Mögliches Duplikat zu verstehen [wie kann ich die Antwort von einem asynchronen Aufruf zurückkehren?] (https: // stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-a-asynchronous-call) – Igor
Auch sollte Ihr Dienst nicht kompilieren, schauen Sie sich die 'then' Anweisung an. – Igor