Inject Http manuell in Winkel 2

Ich habe ein Basismodell erstellt, in dem ich alle gängigen Funktionen zum Abrufen und Posten oder Ablegen von Daten habe. Eigentlich, was ein Dienst im Winkel macht, aber ich will keinen Dienst. Nein, ich plane Folgendes: Das Basismodell wird um alle Module in meinem System erweitert, wobei jedes Modul seinen Basisendpunkt hat, um Daten von der API abzurufen. Hier ist das Problem: Wenn ich den HTTP-Dienst in das Basismodell einfüge und das Benutzermodell das Basismodell erweitert, muss ich zum Erstellen eines Objekts des Basismodells das Objekt von HTTP übergeben, das ich nicht kann.

Bitte teilen Sie mir mit, ob Sie weitere Unterstützung benötigen, um diese Frage zu beantworten.

export class BaseModel {
constructor (http: Http) {}

fetch() {
let params = {
            "includes": this.includes,
            "page": page,
            "filters" : this.filters,
            "order" : this.orderDirection + this.orderColumn
        };

        return this.api.get("/"+this.endpoint, params)
            .map(
                (response: any) => {
                    let total = response.meta.total;
                    let current = response.meta.current;

                    let min = current - 5;
                    let max = current + 5;

                    if (min < 1) {
                        min = 1;
                    }

                    if (max > total) {
                        max = total;
                    }
                    else if (max < 10) {
                        if(total < 10) {
                            max = total;
                        }else {
                            max = 10;
                        }
                    }

                    let pages : number[] = [];

                    for (let i = min; i <= max; i++) {
                        pages.push(i);
                    }

                    this.pages = pages;

                    return response
                }
            );
}
}

Jetzt mein Benutzermodell

export class User extends BaseModel {

public id : number;
    public username : string;
    public email : string;
    public password : string;
    public passwordConfirmation : string;
    public details : UserDetail = new UserDetail();
    public type : string;
    public status : string;
    public profileImage : string;
    public profileImageUrl : string;
    public crop : Object = {};
    public lastLogin : string;
    public numberOfLogin : string;
    public joinDate : string;
    public registerType : string = "web";

    public static create(response : any) {

        if (response === undefined || response === null) {
            return response;
        }

        let details = new UserDetail();

        if (response.details) {
            details = UserDetail.create(response.details);
        }

        let user = new User(); //error parameter required
        user.id = response.id;
        user.username = response.username;
        user.email = response.email;
        user.status = response.status;
        user.type = response.type;
        user.details.id = response.details.id;
        user.details = details;
        user.profileImageUrl = response.profile_image_url;
        user.joinDate = response.created_at;
        user.registerType = response.register_type;

        return user;
    }

}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage