Angular - ответ http.get не загружает все данные - PullRequest
0 голосов
/ 02 июля 2018

Я работаю над проектом с ASP Core 2 на стороне сервера и Angular 5 на стороне клиента, когда я отправляю запрос http.get с помощью POSTMAN, все данные загружаются.

ПОСТАНОВКА ПОСТМАНА

Проблема в том, что когда я отправляю один и тот же запрос с углом 5, загружаются не все данные (Check, recRes)

Не все данные загружены

Вот мой серверный код с ASP Core 2

 // GET: api/Reclamations/5
    [HttpGet("byClient/{id}"), Authorize]
    public async Task< ActionResult > Get(int id)
    {
        try
        {
            var ResRecs = await _context.Reclamations
                .Where(r => r.IdClient == id)
                .Include(n => n.IdClientNavigation)
                .Select(x => new
                {
                    observations = x.Observations,
                    rdv = x.Rdv,
                    explications = x.Explication,
                    idRec = x.Id,
                    pattern = x.Pattern

                })
                .OrderBy(t => t.rdv)
                .ToListAsync();
            var checkBoxes = new List<String>();
            foreach(var item in ResRecs)
            {
                if (item.pattern.Contains("DOTDelanteroIzquierdo")) checkBoxes.Add("DOTDelanteroIzquierdo"+item.idRec);
                if (item.pattern.Contains("DOTDelanteroDerecho")) checkBoxes.Add("DOTDelanteroDerecho" + item.idRec);
                if (item.pattern.Contains("DOTTraseroIzquierdo")) checkBoxes.Add("DOTTraseroIzquierdo" + item.idRec);
                if (item.pattern.Contains("DOTTraseroDerecho")) checkBoxes.Add("DOTTraseroDerecho" + item.idRec);
            }

            var  ResClient = await _context.Clients
               .Where(r => r.Id == id)
               .Select(x => new
               {
                   idClient = x.Id,
                   nameClient = x.FullName,
                   addressClient = x.Address,
                   postalCodeClient = x.PostalCode,
                   cityClient = x.City,
                   telClient = x.Tel,
                   emailClient = x.Email
               }).SingleAsync();
            return Content(Newtonsoft.Json.JsonConvert.SerializeObject(new {ResClient, ResRec = ResRecs, Check = checkBoxes , success = true, message = "The Reclamation loaded"  }), "application/json");


        }
        catch (Exception ex)
        {
            Console.WriteLine("Error : " + ex);
        }
        return Content(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, message = "The Reclamation is not loaded" }), "application/json");

    }

Служба вызовов My Angular 5

import { Injectable } from '@angular/core';
import { AppconfigService } from '../appconfig.service';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class ReclamationsService {

    constructor(private http: HttpClient) { }
     UrlRecs: string = AppconfigService.settings.server.url + "api/Reclamations/";
    getRec(idClient){

    return this.http.get(this.UrlRecs + "byClient/" + idClient);
}
}

Вот мой компонент вызова сервиса

this.reclamationSvc.getRec(this.idClient).subscribe(
  (response: Response) => {
    console.log('Before', response);
    if (response["success"] == true) {
       this.ResRecs = response["ResRec"];

      this.checkBoxs = response["Check"];

      this.c = response["ResClient"];


    }
    else {
      alert("Error");
    }

  },
  (error) => {

  }
)

Я пытаюсь сделать это уже 5 дней. Что может быть не так с моим кодом?

1 Ответ

0 голосов
/ 02 июля 2018

Я не знаю. но попробуй в API вернуть OK

return OK(new {ResClient, ResRec = ResRecs, Check = checkBoxes , 
               success = true, message = "The Reclamation loaded"  });

И использовать точечную запись в Angular

   if (response.success == true) {
      this.ResRecs = response.ResRec;
      this.checkBoxs = response.Check;
      this.c = response.ResClient;
    }
...