Вместо решения этого во время создания модуля, почему бы не сделать сам сервис более гибким? Я знаю, что это не отвечает на ваш первоначальный вопрос, но может решить вашу проблему.
Модифицированный UserService:
class PlatformAgnosticUserService implements IUserService {
private service: IUserService;
constructor(
private _PLAT : Platform,
private mobileUserService: MobileUserService,
private webUserService: WebUserService
) {
if (this._PLAT.is('ios') || this._PLAT.is('android'))
{
this.service = mobileUserService;
}
else
{
this.service = webUserService;
}
}
userCreate(param: any) {
this.service.userCreate(param);
}
}
Я знаю, что это не так хорошо, но это лучшее, что я могу придумать, ура.
Старый ответ ниже
Я думаю, вы можете усложнять ситуацию. Почему бы не упростить это:
@NgModule({
providers: [
{
provide: UserService,
useFactory: userServiceFactory,
deps: [],
multi: true
},
],
bootstrap: [AppComponent]
})
export class AppModule { }
А это:
const growerServiceFactory = (configService: ConfigService): () => Promise<any> => {
return (): Promise<any> => {
return new Promise(
resolve => {
Device.getInfo().then(info => {
return new UserServiceDevice();
},
() => {
return new UserWebServiceWeb()
});
});
}
Не уверен, что вы используете службу конфигурации для чего-то еще, но, по крайней мере, в этом случае его можно «пропустить».