angular2 in-memory-web-api 仅适用于应用程序的一部分

angular2 in-memory-web-api only for a part of an application

我想知道是否可以只为应用程序的一部分配置 angular2 in-memory-web-api。我想为完成的组件访问外部端点,并为处于开发阶段的组件使用 in-memory-web-api。

我尝试过以下两种方式:

1 - 在 main 中加载数据并更改我想要到达内存端点的组件中的 XHRBackend;

main.ts

bootstrap(AppComponent, [
    ...
    { provide: SEED_DATA, useClass: InMemoryDataService }
]);

inDevelopmentStage.service.ts

@Component({
    providers: [
        { provide: XHRBackend, useClass: InMemoryBackendService }
    ]
})

2 - 加载数据并更改我想要到达内存端点的组件中的 XHRBackend;

inDevelopmentStage.service.ts

@Component({
    providers: [
        { provide: XHRBackend, useClass: InMemoryBackendService }, // in-mem server
        { provide: SEED_DATA, useClass: InMemoryDataService }      // in-mem server data
    ]
})

有什么方法可以实现这个目标吗?

感谢您的帮助!

正如filipesilva here指出的那样,第二种方法应该可行。

” 哦,当然,你绝对可以做到这一点。每个组件都有自己的注入器,它为自身和该子树中的所有组件解析提供者。

你的第二个例子应该有效:

@Component({
    providers: [
        { provide: XHRBackend, useClass: InMemoryBackendService }, // in-mem server
        { provide: SEED_DATA, useClass: InMemoryDataService }      // in-mem server data
    ]
})

至于该组件及其子树,XHRBackend 是 InMemoryBackendService 而不是 HTTP_PROVIDERS 提供的服务。

请记住,它也适用于该子树中的任何其他组件。也许这就是问题所在? “

谢谢菲利普!