Ich habe einen Dienst entwickelt, der Typ zurückgeben Objekt ist:Wie verwaltet man Datentypen zwischen angular2 Services Aufruf und Komponente?
import { Injectable } from '@angular/core';
import {ClientApi} from '../shared/sdk/services';
import {CategoryApi} from '../shared/sdk/services';
@Injectable()
export class CategoryService {
public categoriesList;
name = '';
constructor(private category: CategoryApi, private userApi: ClientApi) {}
getCategories(){
this.category.find({where: {clientId: this.userApi.getCurrentId()}}).subscribe((data) => {
this.categoriesList = data;
console.log("type : " + typeof(this.categoriesList));
console.log ("data:" + JSON.stringify(data));
return data;
}, err => {
console.log(err);
});
}
}
In einer ts Komponentendatei, nenne ich diesen Dienst:
import {Component} from '@angular/core';
import {CategoryService} from './category.service'
@Component({
selector: 'category',
templateUrl: './category.component.html',
styleUrls: ['./category.component.css'],
providers: [CategoryService]
})
export class CategoryComponent {
public categories;
constructor(categoryService: CategoryService)
{
this.categories = categoryService.getCategories();
console.log ("categories: " + this.categories);
}
}
die variablen Daten, die ich in meinem Dienst haben, ist von Objekt Typ und auf meiner Komponente ts-Datei, habe ich eine undefined Typ. Die Folge ist, dass die HTML-Datei die Komponenteneigenschaften nicht lesen kann.
Jede Hilfe wäre willkommen.
Vielen Dank im Voraus.
Was ich einen Dienst zu tun haben will, ist, dass die Beobachtung aus dem Backend bekommt und setzen diese welches Format auch immer ist. Wenn ich eine getCategories() | async, werde ich beim Anzeigen mit geringer Latenz konfrontiert? Ich möchte natürlich nicht jedes Mal die GetCategories() aufrufen. Unter Berücksichtigung des von Ihnen bereitgestellten Codes erhalte ich: ** Rückgabetyp der öffentlichen Methode aus der exportierten Klasse hat oder verwendet den Namen "Observable" aus dem externen Modul ** –
'getCategories() | async' ruft nur 'getCategories()' einmal auf. –
In Anbetracht des von Ihnen bereitgestellten Codes bekomme ich: ** Rückgabetyp der öffentlichen Methode aus der exportierten Klasse hat oder verwendet den Namen "Observable" aus dem externen Modul ** - eine Idee? –