我想知道在Angular2中是否有正確的方法來注入接口? (參見下面)是否可以使用angular2注入接口?
我認爲這與接口上缺少的@Injectable()裝飾器有關,但似乎這是不允許的。
問候。
當CoursesServiceInterface被作爲接口來實現,打字稿編譯器抱怨 「CoursesServiceInterface找不到名稱」:
import {CoursesServiceInterface} from './CoursesService.interface';
import {CoursesService} from './CoursesService.service';
import {CoursesServiceMock} from './CoursesServiceMock.service';
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
GlobalService,
provide(CoursesServiceInterface, { useClass: CoursesServiceMock })
]);
但CoursesServiceInterface作爲一個接口:
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; };
}
當服務是一流的, TypeScript編譯器不再抱怨:
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:是我失蹤了......太糟糕了,是不是在官方教程 – Aligned
https://angular.io/docs/ts/最新版本/ cookbook/dependency-injection.html#!#usevalue –