2017-02-10 1 views
1

Ich möchte Daten speichern und durch die gesamte Anwendung übergeben. Dafür habe ich Shared ServiceVerwenden Sie Klasse oder Schnittstelle für den gemeinsamen Dienst

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

export interface IAccountModel { 
    sessionId: string; 
} 

@Injectable() 
export class AccountContextService { 

    AccountModel: IAccountModel = { 
    sessionId: '' 
    }; 

    constructor() { } 

} 

geschrieben. Ich habe Frage, welche ist Best Practice verwenden Sie Klasse für diese oder Schnittstelle Daten zu behandeln.

Was sind Vorteile oder Nachteile?

Antwort

0

Sie können Schnittstellen, abstrakte Klassen oder sogar Klassen anstelle von Schnittstellen verwenden, aber es gibt wichtige Einschränkungen: Nur Klassen und OpaqueToken s können für die Injektion verwendet werden.

class AbstractService {} 

class Service extends AbstractService implements IService {} 

//will not work 
provide: [{provide: IService, useClass: Service}] 
constructor(private service:IService){} 

//will work 
provide: [{provide: AbstractService, useClass: Service}] 
constructor(private service:AbstractService){} 
constructor(private @Inject(AbstractService) service:IService){} 
Verwandte Themen