В вашем коде есть две проблемы.
1- Ваш метод возвращает массив, и вы подписаны на него (хотя есть проблема с асинхронностью)
2- Метод возвращает массив взакончите, и это произойдет до того, как ваш результат обещания станет готовым
Решение 1:
public getCatalogsData(): Promise<any>{
return this.http.get(this.APIUrl).toPromise();
}
this.catalogService.getCatalogsData().then((data => {
this._catalogData=data;
console.log("catalogService function execution done!");
}));
Решение 2
public getCatalogsData(): Observable<any>{
return this.http.get(this.APIUrl);
}
this.catalogService.getCatalogsData().subscribe((data => {
this._catalogData=data;
console.log("catalogService function execution done!");
}));
Примечание
В обоих решениях выpublic responseData:any=[];
не нуждается в вашем обслуживании