5

至少我认为我提供的是正确的。下面是我的 app.module 文件和我使用 AuthHttp 的服务的相关片段。我按照自述文件中的配置创建了为 AuthHttp 提供的工厂方法,但存在一个持续存在的问题,即在我的服务中无法识别它。我读过关于嵌套依赖注入的文献,我觉得我做的事情是正确的。

app.module.ts

import { Http, RequestOptions } from '@angular/http';
import { provideAuth, AuthHttp, AuthConfig } from 'angular2-jwt/angular2-jwt';

export function authHttpServiceFactory(http: Http, options: RequestOptions) {
  return new AuthHttp(new AuthConfig(), http, options);
}

@NgModule({
    declarations: [
        AppComponent,
        ButtonFormComponent,
...
imports: [
        BrowserModule,
        FormsModule,
        HttpModule,
        RouterModule,
        AppRoutingModule
    ],
    providers: [
        {
            provide: LocationStrategy,
            useClass: HashLocationStrategy
        },
        {
            provide: AuthHttp,
            useFactory: authHttpServiceFactory,
            deps: [Http, RequestOptions]
        },

员工服务.ts

import { AuthHttp } from 'angular2-jwt/angular2-jwt';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
import 'rxjs/add/observable/throw';

import { ApiSettings } from './api-settings';


@Injectable()
export class EmployeeService {
    api: String;
    auth: String;
    constructor(private http: Http, private authHttp: AuthHttp) {
        this.api = ApiSettings.API;
        this.auth = ApiSettings.Auth;
    }
4

1 回答 1

6

您可以通过在app.module.ts中使用以下导入来解决此问题,这里的关键导入是AUTH_PROVIDERS。此外,请确保在提供程序数组中包含AUTH_PROVIDERS

    import { AuthHttp, AUTH_PROVIDERS, provideAuth, AuthConfig } from 
    'angular2-jwt/angular2-jwt';

    @NgModule({
       providers: [AUTH_PROVIDERS]
    })
于 2017-12-20T12:28:42.980 回答