具有接口方案的角度2依赖注入

时间:2017-03-14 04:19:15

标签: angular typescript dependency-injection

背景:我正在构建一个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和依赖注入的在线资料,但未能使用任何材料来实现这种情况。

0 个答案:

没有答案