Как загрузить данные в сервис на начальной загрузке в Angular2 RC4
Вот сценарий. У меня есть две услуги введены. Я хочу убедиться, что некоторые данные, например, базовый URL, передаются первому сервису, чтобы все последующие сервисы имели к нему доступ.
Вот мой корневой компонент
export class AppCmp {
constructor (private httpService:HttpService, private SomeService:someService){}
}
вот первый сервис, давайте предположим, что это пользовательский httpSerive
@Injectable()
export class HttpService{
BASE_URL:string;
constructor(private http:Http){
}
getAll(){ return this.http.get(this.BASE_URL) }
}
здесь второй сервис, который будет зависеть от первого, который будет выполнять запрос http.get.
@Injectable()
export class SomeService{
constructor(private httpSerivce:HttpSerivce){
this.httpService.getAll()...
}
}
Я не хочу жестко кодировать базовый URL (или данные) в сервис, и я не хочу задействовать localStorages, поэтому у меня есть два варианта: либо в main.ts (файл начальной загрузки), либо в корневом компоненте, при условии, что они разделены,
Важность заключается в том, что данные доступны в первую очередь и могут быть переданы или получены первым внедренным сервисом.
Надеюсь, я смог проиллюстрировать тему и спасибо!
2 ответа
Вы можете предоставить все виды стоимости.
Зарегистрируйте провайдера, используя строковый ключ (или OpaqueToken
)
{provide: 'BASE_URL', useValue: someUrl}
и впрыскивать это как
constructor(@Inject('BASE_URL') private baseURL:string)
Для RC4 сделать это в main.ts
let injector = ReflectiveInjector.resolveAndCreate(HTTP_PROVIDERS);
let http = injector.get(Http);
let authService = new AuthService(new LocalStorage(),http);
authService.BASE_URL='you url goes here'
bootstrap(AppComponent, [
APP_ROUTER_PROVIDERS,
[provide(AuthService, {useValue: authService})],
]).catch(err => console.error(err));
сделать это app.module.ts
но этот код для RC5
ваш сервис:
let authService = new AuthService(new LocalStorage(), http);
authService.BASE_URL='you url goes here'
а затем добавить его в массив провайдеров
@NgModule({
imports: [
BrowserModule,
FormsModule,
],
declarations: [
AppComponent,
],
bootstrap: [
AppComponent
],
providers: [
{provide: AuthService, useValue: authService},
]
})