Angular 7服务从静态API返回未定义

我正在尝试从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-notification.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',[])));
}

我不确定如何在此^点检查数据,但没有显示错误。

这是电子邮件通知中返回“未定义”的代码:

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; }
}

任何帮助表示赞赏。谢谢!

fanxin8798 回答:Angular 7服务从静态API返回未定义

这可能是因为您尚未订阅Observable,或者是将task数组的初始数据预置为未定义

您是否尝试过使用rxjs订阅EmailNotificationService中的可观察对象,有时它可能未定义,因为未定义数组的初始值开始时可能会设置一个空数组可能会有所帮助

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;
  });
}
本文链接:https://www.f2er.com/3164344.html

大家都在问