需要在功能上访问服务

时间:2017-03-04 13:54:44

标签: angular restangular angular2-services

我有一个服务(AuthService),我需要在我的restangularInit函数中访问(在我的app.module.ts中),但我不知道如何,我无法访问它。< / p>

我试图将它移到AppModule类,但到那时已经很晚了。

调用服务功能,例如。 getToken按预期工作。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { MaterialModule } from '@angular/material';
import { FlexLayoutModule } from "@angular/flex-layout";
import { RestangularModule } from 'ng2-restangular';

// Components
import { AppComponent } from './app.component';
import { ProductComponent } from './components/product/product.component';

// Services
import { AuthService } from './services/auth.service';

export function restangularInit(RestangularProvider, AuthService) {
  console.log(AuthService); // this is undefined
  let token = AuthService.getToken(); //This is what I want to do
  RestangularProvider.setBaseUrl('api');
  RestangularProvider.setDefaultHeaders(
    {'Authorization': 'Bearer ' + token},
  );
}

@NgModule({
  declarations: [
    AppComponent,
    ProductComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MaterialModule,
    FlexLayoutModule,
    RestangularModule.forRoot(restangularInit)
  ],
  providers: [
    AuthService
  ],
  entryComponents: [ProductComponent],
  bootstrap: [AppComponent]
})
export class AppModule { }

2 个答案:

答案 0 :(得分:1)

创建一个静态方法getToken(),然后就像在代码中一样访问它。

let token = AuthService.getToken(); //This is what I want to do

答案 1 :(得分:1)

根据documentation你可以像::

那样做
RestangularModule.forRoot([AuthService], restangularInit)

然后

export function restangularInit(RestangularProvider, authService: AuthService) {
  console.log(authService); // this is AuthService instance
  let token = authService.getToken(); //This is what I want to do
  RestangularProvider.setBaseUrl('api');
  RestangularProvider.setDefaultHeaders(
    {'Authorization': 'Bearer ' + token},
  );
}