背景:我正在构建一个Angular 2应用程序。我有一个接口,声明了一些属性和一些功能。我有一个实现该接口的类。我想将接口传递给其他类的构造函数。我想让Angular在需要接口时自动注入具体的Class。我不想要在每个构造函数中指定具体类的注入,我只想指定接口。
以下是我的界面的副本:
export interface IAuthSystem {
isAuthenticated: Boolean;
getCurrentUser(): User;
}
以下是实现接口的类的简化版本:
@Injectable()
export class FirebaseAuthSystem implements IAuthSystem {
public isAuthenticated: Boolean = false;
public getCurrentUser(): User {
return new User();
}
}
以下是来自另一个类的构造函数的简化版本,我希望将FirebaseAuthSystem类自动(并且干净地)注入到authSystem参数中。
export class LoginPage {
constructor(
public navCtrl: NavController,
public navParams: NavParams,
public authSystem: IAuthSystem) {...
我尝试使用Angular 2 Providers(在app.module.ts中)。但提供商似乎不支持接口。当我使用它时:
providers: [
{ provide: IAuthSystem, useClass: FirebaseAuthSystem },
]
我收到一条错误消息,说“ IAuthSystem仅引用某个类型,但此处将用作值 ”。我以为我有两个属性切换(提供和useClass),但我仍然得到相同的错误。我也试过使用useExisting,但是我得到了同样的错误。
我已经阅读了很多关于Angular 2和依赖注入的在线资料,但未能使用任何材料来实现这种情况。