Mi chiedo se esiste un modo corretto per iniettare interfacce in Angular2? (vedi sotto)È possibile iniettare un'interfaccia con angular2?
Penso che questo sia correlato con il decoratore mancante @Injectable() sull'interfaccia, ma sembra che questo non sia permesso.
Saluti.
Quando CoursesServiceInterface viene implementato come interfaccia, il compilatore dattiloscritto lamenta "CoursesServiceInterface non riesce a trovare il nome":
import {CoursesServiceInterface} from './CoursesService.interface';
import {CoursesService} from './CoursesService.service';
import {CoursesServiceMock} from './CoursesServiceMock.service';
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
GlobalService,
provide(CoursesServiceInterface, { useClass: CoursesServiceMock })
]);
ma con CoursesServiceInterface come interfaccia:
import {Injectable} from 'angular2/core';
import {Course} from './Course.class';
//@Injectable()
export interface CoursesServiceInterface {
getAllCourses(): Promise<Course[]>;//{ return null; };
getCourse(id: number): Promise<Course>;// { return null; };
remove(id: number): Promise<{}>;// { return null; };
}
Quando il servizio è una classe, il compilatore TypeScript non si lamenta più:
import {Injectable} from 'angular2/core';
import {Course} from './Course.class';
@Injectable()
export class CoursesServiceInterface {
getAllCourses() : Promise<Course[]> { return null; };
getCourse(id: number) :Promise<Course> { return null; };
remove (id: number) : Promise<{}> { return null; };
}
useClass: era quello che mi mancava ... peccato che non è nel tutorial ufficiale – Aligned
https://angular.io/docs/ts/ ultimo/ricettario/dependency-injection.html #! # usevalue –