我有一个服务接口和一个注入令牌:
User.update(
{ _id: req.user._id, 'addresses._id': addressId },
{ $set: {
'addresses.$.alias': newAddress.alias,
'addresses.$.address': newAddress.address,
'addresses.$.areaId': newAddress.areaId,
'addresses.$.cityId': newAddress.cityId,
'addresses.$.postal_code': newAddress.postal_code
} }
);
app.module.ts:
export const AUTH_PROVIDER_IT = new InjectionToken<AuthProvider>('auth')
export interface AuthProvider {
login(IAuthLoginData): Promise<void>
logout()
register(IAuthRegistrationData): Promise<void>
}
我在登录页面中使用它:
@NgModule({
...
providers: [
...
{provide: AUTH_PROVIDER_IT, useClass: CognitoAuthProvider},
]
})
一切正常......
但是现在我有一个需要具体类的服务:
export class LoginPage implements OnInit {
constructor(public navCtrl: NavController, ...
@Inject(AUTH_PROVIDER_IT) public auth: AuthProvider) {
}
...
}
所以我这样做:
@Injectable()
export class CognitoProfileProvider implements ProfileProvider {
constructor(private cognitoAuth: CognitoAuthProvider) {
}
}
但是当我尝试在我的@NgModule({
...
providers: [
...
CognitoAuthProvider, <--- HERE
{provide: AUTH_PROVIDER_IT, useClass: CognitoAuthProvider},
{provide: PROFILE_PROVIDER_IT, useClass: CognitoProfileProvider} <-- AND HERE
]
})
中阅读CognitoAuthProvider
时,我意识到这是一个新的实例......
为什么我为同一个提供商获取不同的实例?这是预期的行为吗?
注意:我测试过只注入具体的提供程序,它确实有效,但我想使用该接口。
也许我正在处理这个错误,我应该如何使用依赖注入建模并行继承层次结构?基本上是一个CognitoProfileProvider
工厂模式,这可能吗?
我希望能够使用(CognitoAuthProvider,CognitoProfileProvider)或(SomeOtherAuthProvider,SomeOtherProfileProvider)代替我的界面。
答案 0 :(得分:0)
同时使用令牌和类本身时,您必须使用finished index 0 (1/10).
finished index 1 (2/10).
finished index 2 (3/10).
finished index 3 (4/10).
finished index 4 (5/10).
finished index 6 (6/10).
finished index 8 (7/10).
finished index 7 (8/10).
finished index 9 (9/10).
finished index 5 (10/10).
而非useExisting
详细here
useClass