#angular
Вопрос:
Как я могу сохранить данные в requestArray, а затем использовать их для исправления?
requestArray не используется в коде
Я пытался, но это дает мне неопределенную одну строку, прежде чем исправлять ее.
ngOnInit(): void {
this.getOneRequest(localStorage.getItem("xyz")); //returns id of the array
}
requestArray: any;
data={areaOfInterest:"",resourceDTOS:[{seniority:"",skillDTOS:[{skill:"",},],resourceNotes:"",},],};
//just a json
myForm: FormGroup;
constructor(private fb: FormBuilder, private requestService: RequestService) {
this.myForm = this.fb.group({
areaOfInterest: [""],
startDate: [""],
endDate: [""],
description: [""],
notes: [""],
resourceDTOS: this.fb.array([]),
});
this.setResourceDTOS();
console.log(this.requestArray); //returns undefined
this.myForm.patchValue(this.requestArray);
}
getOneRequest(id: string) {
return this.requestService.GetSingleRequest(id).subscribe((data) => {
console.log(data);
JSON.stringify(data);
this.requestArray = data;
});}
Что я могу сделать, чтобы потенциально исправить это?
Ответ №1:
Метод конструктора всегда выполняется до ngOnInit. Кроме того, ответ можно использовать только в запросе API.
Чтобы устранить эту проблему, переместите запрос API в конструктор и вызовите функцию patchValue в запросе:
Новый конструктор:
constructor(private fb: FormBuilder, private requestService: RequestService) {
this.myForm = this.fb.group({
areaOfInterest: [""],
startDate: [""],
endDate: [""],
description: [""],
notes: [""],
resourceDTOS: this.fb.array([]),
});
this.setResourceDTOS();
this.requestService.GetSingleRequest(id).subscribe((data) => {
console.log(data);
JSON.stringify(data);
this.requestArray = data;
console.log(this.requestArray); //will no longer be undefined
this.myForm.patchValue(this.requestArray);
});
}