J'essaie de renvoyer une liste de tâches et un service angulaire qui obtient les données d'une API .NET reposante. L'API renvoie les données appropriées, mais lorsque console.log le résultat de la fonction souscrite n'est pas défini. Veuillez aider!

Voici la méthode API qui fonctionne correctement: TaskController.cs

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

J'ai deux services appelés task.service.ts et un appelé email-notification.service.ts. La tâche consiste à renvoyer toutes les tâches d'une collection. La notification par e-mail consiste à récupérer les tâches à partir du service de tâches, puis à les parcourir pour vérifier une valeur de propriété spécifique dans les données de tâche.

Voici la méthode de 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', [])));
}

Je ne sais pas comment vérifier les données à ce stade, mais cela ne montre pas d'erreur.

Voici le code de la notification par e-mail qui renvoie "Non défini":

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

Ici, je reçois une erreur dans la console pour essayer d'itérer à travers un objet non défini.

Voici ma classe dactylographiée:

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

}

et voici ma classe 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; }
}

Toute aide appréciée. Je vous remercie!

0
tks2n 4 nov. 2019 à 22:02

1 réponse

Cela peut être dû au fait que vous n'êtes pas abonné à l'Observable ou que les données initiales correspondant au tableau des tâches sont prédéfinies sur non définies

avez-vous essayé d'utiliser rxjs pour vous abonner à votre observable dans votre EmailNotificationService parfois il peut arriver indéfini parce que la valeur initiale du tableau n'est pas définie pour commencer peut-être le configurer avec un tableau vide pourrait aider

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;
  });
}
0
shahidfoy 4 nov. 2019 à 19:32