在RC5之前,我们可以在组件级别声明提供程序,如下所示:
@Component({
providers: [SomeService]
})
每个组件都会获得SomeService的新实例,但是现在使用RC5的组件提供程序已被弃用,以便我们如何实现这种效果?
答案 0 :(得分:1)
一种方法是向您的服务添加一个返回新实例的工厂方法。
export class SomeService {
constructor(private http: Http) {}
create() {
return new SomeService(this.http);
}
}
这非常糟糕,需要您在组件中调用create。
订阅的解决方案似乎是使用Factory Provider。
基本上,您创建工厂方法和提供者对象:
import { Http } from '@angular2/core';
import { SomeService } from './SomeService';
let someServiceFactory = (http: Http) => {
return new SomeService(http);
};
export let SomeServiceProvider =
{ provide: SomeService,
useFactory: someServiceFactory,
deps: [Http]
};
现在您像以前一样注入SomeService
,并且您将始终获得一个新的transient
实例。
将提供程序导入您的模块或组件,并将其注册为providers: [someServiceProvider]
或者将其内联为:
providers: [{
provide: SomeService,
useFactory: (http: Http) => { return new SomeService(http)},
deps: [Http]
}]
答案 1 :(得分:-1)
根据快速启动here服务并没有真正改变。还需要4个核心的东西
2.将该服务导入组件
3.提供该服务
4并在导出
中构建它