Служба Angular 7 возвращает неопределенный от restful API - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь вернуть список задач из службы Angular, которая получает данные из спокойного .NET API. API возвращает правильные данные, но когда console.log дает результат из подписанной функции, он только не определен. Пожалуйста, помогите!

Вот метод API, который работает правильно: TaskController.cs

[HttpGet, Route("")]
    public IEnumerable<GetAllTasksAndInfoDto> GetAll()
    {
        IEnumerable<GetAllTasksAndInfoDto> tasks = _taskRepository.GetAllTasksAndInfo();
        return tasks;
    }

У меня есть две службы с именем task.service.ts и одна, называемая email -tification.service. .ts. Задача - вернуть все задачи в коллекцию. Уведомление по электронной почте предназначено для извлечения задач из службы задач, а затем итерации по ним для проверки конкретного значения свойства в данных задачи.

Вот метод из task.service.ts:

export class TaskService {

constructor(private http: HttpClient, private messageService: MessageService) {}

getTasks(): Observable<getAllTasksAndInfo[]> {
    return this.http.get<getAllTasksAndInfo[]>(http://localhost:xxxxx/api/task)
        .pipe(
            tap(_=>this.log('fetched tasks')),
        catchError(this.handleError<getAllTasksAndInfo[]>('getTasks', [])));
}

Я не уверен, как проверить данные в этой точке ^, но это не показывает ошибку.

Вот код из уведомления по электронной почте, который возвращает «Undefined»:

export class EmailNotificationService{

tasks: getAllTasksAndInfo[];

constructor(private http: HttpClient, private messageService: MessageService, public  taskService: TaskService)
{
    this.getTasks().subscribe(result => this.tasks = result);
}
getTasks(): Observable<getAllTasksAndInfo[]>{
     return this.taskService.getTasks();
}

this.tasks.forEach((task) => {
        console.log(`task: ${JSON.stringify(task)}`);
        }
    });

Здесь я получаю сообщение об ошибке в консоли за попытку перебрать и неопределенный объект.

Вот мой класс машинописи:

export class getAllTasksAndInfo {
taskId: number;
stepName: string;
officeName: string;
csrName: string;
taskType: string;
daysActive: number;

}

, а вот мой класс API:

public class GetAllTasksAndInfoDto
{
    public int taskId { get; set; }
    public string stepName { get; set; }
    public string officeName { get; set; }

    public string csrName { get; set; }

    public string taskType { get; set; }

    public int daysActive { get; set; }
}

Любая помощь приветствуется. Спасибо!

1 Ответ

0 голосов
/ 04 ноября 2019

Это может быть потому, что вы не подписались на Observable или исходные данные, которые являются массивом задач, по умолчанию имеют неопределенное значение

вы пытались использовать rxjs для подписки на наблюдаемое в вашем EmailNotificationService, иногда это может прийтив undefined, потому что начальное значение массива неопределено, для начала, возможно, установка его с пустым массивом может помочь

private tasks: getAllTasksAndInfo[] = [];

constructor(private http: HttpClient, private messageService: MessageService, public  taskService: TaskService)
{
  this.tasks = this.getTasks();
}

getTasks() {
 this.taskService.getTasks().subscribe((tasks: getAllTasksAndInfo[]) => {
   console.log(tasks);
   return tasks;
  });
}
...