1

angular の ngoninit でオブジェクトが常に「未定義」である理由がわかりません。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"
}
4

2 に答える 2

0

データがまだないため、未定義です。

     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 
  }
于 2019-01-11T13:14:58.150 に答える