как преобразовать объект в массив в машинописи - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь отобразить результат веб-сервиса, который является JSON в моем ионном проекте.Я могу получить его и отобразить в консоли, но не могу отобразить его в представлении HTML.Это мой код:

service.ts

 searchPerson(admin: AdminInfo): Observable<Person[]> {
    return this.http.post<Person[]>(this.personServiceApi, admin, httpOptions).pipe(
        tap((newRequest: Person[]) => {
        console.log(`fetched persons` + newRequest);}),
        catchError(this.handleError<Person[]>('fetched persons'))
    );
  }

menupage.ts:

  this.loginService.searchPerson(this.admin).subscribe((persons: Person []) => {
          if (Array.isArray(persons)) { // checks if persons is an array
              this.persons = persons;
              } else {
              console.error('persons in not an array');
              console.log('Type of persons is : ' + typeof persons);
              console.log('Persons:');
              console.log(persons);
              }
      });

menupage.html

 <ion-list>
    <ion-item *ngFor="let person of persons">
     <p>{{person.Address}}</p>
    </ion-item>

  </ion-list>

Эторезультат в консоли:

fetched persons[object Object]
persons in not an array
Type of persons is : object
Persons:
{GetAllPersonResult: Array(41)}
  GetAllPersonResult: Array(41)
    0: {Address: "", Barcode: "", BirthDate: "",CertificateNo: "", Charge: , 
       …}
    1: {Address: "",Barcode: "", BirthDate: "",CertificateNo: "", Charge: , 
          …}
    2: {Address: "", Barcode: "", BirthDate: "", CertificateNo: "", Charge: 
       , …}
    3: {Address: "", Barcode: "", BirthDate: "",CertificateNo: "", Charge: , 
          …}
    4: {Address: "", Barcode: "",BirthDate: "", CertificateNo: "", Charge: , 
        …}
    …………………………………………………………………………………………………………………………………………………………….


    40: {Address: "", Barcode: "", BirthDate: "", CertificateNo: "", Charge: 
        , …}
4.  length: 41
5.  __proto__: Array(0)
2.  __proto__: Object

enter image description here

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Полагаю, виновником является persons, а не array. Попробуйте этот код и посмотрите вашу консоль на наличие ошибки

this.loginService.searchPerson(this.admin).subscribe((persons: Person[]) => {
  if (Array.isArray(persons)) { // checks if persons is an array
    this.persons = persons;
  } else {
    console.error('persons in not an array');
    // this.persons = [persons];
    this.persons = [];
  }
});
0 голосов
/ 07 июля 2019

Вам нужно изменить метод ngOnInit следующим образом:

this.loginService.searchPerson(this.admin).subscribe((persons: Person[]) => {
    this.persons = persons;

    console.log(this.persons);
});

Дайте мне знать, если этот ответ полезен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...