【发布时间】:2020-02-09 09:48:22
【问题描述】:
我的 AppModule 定义有一个非常简单的设计。我的提供程序中有一组模拟服务,它利用本地数据,直到我的端点可以得到解决。随着服务端点的建立,我正在慢慢地将它们迁移过来。问题是应用程序非常需要一些配置来启动和运行端点,所以我创建了一个简单的配置文件,该文件创建了一个属性:useMockedServices,供想要使用演示的人使用。
{
useMockedServices: true
}
但是,我的问题是。如何为提供者考虑此配置?
...
providers: [
{provide: UserService, useClass: MockUserService},
...
],
...
我可以这样做吗:
providers: [
{ provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { hasBackdrop: false }},
...
].concat( config.useMockedServices ? [
{provide: UserSerice, useValue: MockUserService},
...
]: [],
我试图这样做,但我得到一个错误:没有重载匹配这个调用,它说“属性切片的类型不兼容”
providers: [
// Default Options for using Modals / Dialogs.
{ provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { hasBackdrop: false } },
{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },
{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },
{ provide: AuthGuard, useClass: AuthGuard },
{ provide: AuthenticationService, useClass: AuthenticationService }
].concat(
configuration.useMockServices === true ? [
{ provide: UserService, useClass: MockUserService },
...
] : []
),
...
【问题讨论】:
-
@yazantahhan 这个答案的实施可能有效,但它不可持续。我有 15 个服务,每个服务都需要自己的功能。我认为有更好的方法。如果它是 1-off 服务,我会认为这是一个答案,但考虑到批量需求,我不会。
标签: angular typescript