2016-05-13 9 views
0

Ich bin sehr neu in Angular2. Ich hätte gerne eine einzige Klasse mit allen API-Endpunkten (Parameter und solche in den verschiedenen Routen zulassen), die ich in alle meine Dienste injizieren könnte. Was ist der beste Weg, dies in Angular2 zu tun. Ich meine, ich sollte ein definieren @Injectable class wie würden Sie tun, wenn eine Dienstleistung vorschreibt (und fügen Sie dann zu meinem Dienst PROVIDERS) oder ist es etwas ähnlich wie constant in Winkel 1.x, die ichDefinieren Sie einen API-Endpunkt in Angular2 (Typoskript)

Antwort

1

Ich würde eine @Injectable Klasse erstellen, so können Sie die API komponieren, wenn Sie so brauchen.
ich eine API-Service haben, die in der Bootstrap (App Singletons) injiziert wird und es in allen anderen Diensten verwendet wird, ist dies, wie es aussieht:

import { Injectable } from '@angular/core'; 

@Injectable() 
export class ApiService { 
    // Hardcoded user : 
    private user: string = '/user/1'; 

    get userCars() { 
     return `${this.user}${API.userCars}` 
    } 

    get userRegisterCar() { 
     return `${this.user}${API.userRegisterCar}` 
    } 

    get profile() { 
     return this.user; 
    } 
} 

const API = { 
    userCars: '/usercar/details=true', 
    userRegisterCar: '/usercar/registration/' 
} 
+0

Wie funktioniert das, wenn das will ich nicht Benutzer 1, aber Benutzer x? – Scipion

+0

Das ist gut, danke! – Scipion

+0

Sie werden eine andere Setter/Methode haben, die den Benutzer aktualisiert. So etwas wie set user (userID) {this.user = '/ user/$ {userID}'} – tibbus

0

verwenden könnten Sie können versuchen, direkt das Hinzufügen einer konstante-Datei, die alle Ihre konstanten exportiert, wenn das Ihr Zweck löst,

constants.ts

export var APPCONSTANTS: any = { 
     GETDATA_API_PATH : "some path here" 
    } 

wenn Sie IntelliSense wollen, müssen Sie eine Schnittstelle definieren müssen, die alle möglichen Eigenschaften auflistet wie unten und geben die Art des APPCONSTANTS als IAppConstant,

interface IAppConstant{ 
     GETDATA_API_PATH: string 
    } 

Import konstant und zu verwenden,

import { APPCONSTANTS } from "./constants"; // give relative path 
    ... 
    ... 
    let x = APPCONSTANTS["GETDATA_API_PATH"]; 
    or 
    let x = APPCONSTANTS.GETDATA_API_PATH"; 

hoffte, das hilft !!

Verwandte Themen