Невозможно получить значение в ngoninit при угловой подписке
Я не понимаю, почему мой объект всегда "неопределен" на ngoninit на angular. Я прошу о моем проекте API, я получаю свой ответ правильно. Когда я console.log
мой объект не определен (ngoninit), но в другой функции я могу получить значения.
Мои вопросы, почему и как я могу сделать, чтобы мой объект в ngoninit.
Спасибо
Я правильно получаю свой ответ на других почтальонах.
Обслуживание:
getById(id:string):Observable<Grower>{
return this.http.get<Grower>(`${environment.apiUrl}/growers/${id}`);
}
Посмотреть модель:
export class GrowerDetails {
adress:string;
zip:string;
city:string;
}
Составная часть:
growerService:GrowerService;
detailsProfil: GrowerDetails;
constructor(private authenticationService: AuthenticationService, growerService:GrowerService,
private formBuilder:FormBuilder) {
this.growerService = growerService;
}
ngOnInit() {
this.detailsProfil = new GrowerDetails();
this.growerService.getById(this.decoded.nameid).subscribe(
(data:Grower) => this.detailsProfil = {
adress: data.adress,
city: data.city,
zip : data.zip
},
error => console.log(error)
);
console.log(this.detailsProfil); // undefinned
onSubmit(){
console.log(this.detailsProfil); // ok
}
Почтальон:
{
"lat": 0,
"long": 0,
"description": "test",
"adress": "test",
"zip": "test",
"city": "test"
}
2 ответа
Решение
@Devozor92 поменяй свой компонент вот так,
constructor(private authenticationService: AuthenticationService, growerService:GrowerService,
private formBuilder:FormBuilder) {
// this.growerService = growerService; <- this line not required
}
ngOnInit() {
this.detailsProfil = new GrowerDetails();
this.growerService.getById(this.decoded.nameid).subscribe((data) =>
this.detailsProfil.adress= data.adress;
this.details.city= data.city;
this.details.zip=data.zip;
},
error => console.log(error)
);
console.log(this.detailsProfil); // you will get detailsProfil Object
Я надеюсь, что это решит вашу проблему:)
Это не определено, потому что у вас еще нет данных.
ngOnInit() {
this.detailsProfil = new GrowerDetails();
this.growerService.getById(this.decoded.nameid).subscribe(
(data:Grower) => {
this.detailsProfil = {adress: data.adress,city: data.city,zip : data.zip };
console.log(this.detailsProfil); // you can access here because you got it now.
},
error => console.log(error)
);
console.log(this.detailsProfil); // you can't access here. it's still undefined
}