javascript - საუკეთესო გზა გამოაჩინოთ სია json ობიექტში Angular-ის საშუალებით
ვცდილობ აჩვენო ობიექტები სიაში json ობიექტში კუთხის საშუალებით, მაგრამ ნამდვილად ვერ ვახერხებ მის მუშაობას.
JSON მიეწოდება სერვისის მეშვეობით როგორც შესრულებული პირობა:
getJson(): Promise<any> {
return Promise.resolve(this.testdata);
}
ამრიგად, ფუნქცია აბრუნებს [object Promise]
ტესტური მონაცემების json სტრიქონის სტრუქტურა შემდეგია:
{"errorCode":"ok",
"objList":[{},{},etc.]
}
რაც მინდა არის აღინიშნოს სია (მაგალითად ngFor-ის გამოყენებით) და იყოს წვდომა objList-ის შიგნით ობიექტების მახასიათებლებზე.
ჩემი საწყისი იდეა იყო უბრალოდ ობიექტების სიის გადათვალიერება ngFor-ით, ამისთვის მე მივუშვი შემდეგი კლასი
export class ExampleComponent implements OnInit {
json : {"objList": []}
constructor(
private router: Router,
public app: AppService,
public pService: pService
) {
}
ngOnInit(){
this.json = this.pService.getJson()
}
}
ეს, თუმცა, მუშაობას ვერ უწევს, რადგან მე ვიღებ შეცდომას, რომ თვისება objList აკლია ტიპში Promise<any>.
მე ასევე მოვინახულე ngFor KeyValue პაიპთან ერთად, თუმცა ესეც კარგად არ მომუშოდა.
მე ვაფასებდი ნებისმიერ დახმარებას.
პასუხი #1
გთხოვთ, სცადეთ ეს კოდის ფრაგმენტი
ngOnInit(){
this.pService.getJson().
then(response => {
this.json = response;
})
}
პასუხი #2
პრობლემა ის არის, რომ this.pService.getJson() აბრუნებს Promise რეფერენსს. მეტი ინფორმაციისთვის Promise-ის შესახებ დააჭირეთ აქ
აქ არის გამოსწორება, რომელიც უნდა გამოიყენოთ:
ngOnInit() {
// you will need to implement the then call of the promise
this.pService.getJson()
.then((result) => {
this.json = result;
// then call the change detection, I will explain this below
return this.cd.detectChanges();
});
}
დამატებით, ეს შეიძლება გამოიწვიოს changeDetector-ის პრობლემები თქვენთვის, ამიტომ შესაძლოა გინდათ ჩაამატოთ ChangeDetectorRef კომპონენტის კონსტრუქტორში
constructor(
private router: Router,
public app: AppService,
public pService: Service,
public cd: ChangeDetectorRef,
) {
}
ეს ალბათ დაგეხმარებათ, მაგრამ მე შემდგომ ვურჩიებ კიდევ უფრო მეტი კითხვა დაპირებების შესახებ და განიხილოთ Observable გამოყენება Promise-ის ნაცვლად, ნახეთ ეს ლინკი Observable-ზე
