次のエラーに直面し、解決方法を理解できません。AuthenticationServiceのすべてのパラメータを解決できません:([オブジェクトオブジェクト]、?、[オブジェクトオブジェクト])
AuthenticationServiceのすべてのパラメータを解決できません:(?、[オブジェクトのオブジェクト]、[オブジェクトのオブジェクト]を)
私はここにほぼすべてのトピックをチェックしましたし、それを解決する複数の方法を試してみましたそれでもまだ2日目にそれを打つことはできません。
私はこのようなappServiceで最初のAuthServiceを注入しようとしたが、同じエラーに
@Inject(forwardRef(() => AuthenticationService)) public authService: AuthenticationService
を取得し、私はすべてのDIおよびサービスの内部輸入の順序をチェックして、すべてがそう
正しいように思えます誰かが私にそれに対処するのを手伝ってもらえると感謝しています。
アンギュラ4.0.0
のAuthService
import { Injectable } from '@angular/core';
import {Http, Headers, Response} from '@angular/http';
import 'rxjs/add/operator/toPromise';
import {Observable} from 'rxjs/Rx';
import {AppServices} from "../../app.services";
import {Router} from "@angular/router";
@Injectable()
export class AuthenticationService {
public token: any;
constructor(
private http: Http,
private appService: AppServices,
private router: Router
) {
this.token = localStorage.getItem('token');
}
login(username: string, password: string): Observable<boolean> {
let headers = new Headers();
let body = null;
headers.append("Authorization",("Basic " + btoa(username + ':' + password)));
return this.http.post(this.appService.api + '/login', body, {headers: headers})
.map((response: Response) => {
let token = response.json() && response.json().token;
if (token) {
this.token = token;
localStorage.setItem('Conform_token', token);
return true;
} else {
return false;
}
});
}
logout(): void {
this.token = null;
localStorage.removeItem('Conform_token');
this.router.navigate(['/login']);
}
}
アプリケーションサービス
import {Injectable} from '@angular/core';
import {Headers, Http, RequestOptions} from '@angular/http';
import {Router} from "@angular/router";
import {AuthenticationService} from "./auth/auth.service";
import 'rxjs/add/operator/toPromise';
import {Observable} from 'rxjs/Rx';
@Injectable()
export class AppServices {
api = '//endpoint/';
public options: any;
constructor(
private http: Http,
private router: Router,
public authService: AuthenticationService // doesn't work
// @Inject(forwardRef(() => AuthenticationService)) public authService: AuthenticationService // doesn't work either
) {
let head = new Headers({
'Authorization': 'Bearer ' + this.authService.token,
"Content-Type": "application/json; charset=utf8"
});
this.options = new RequestOptions({headers: head});
}
// ====================
// data services
// ====================
getData(): Promise<any> {
return this.http
.get(this.api + "/data", this.options)
.toPromise()
.then(response => response.json() as Array<Object>)
.catch((err)=>{this.handleError(err);})
}
アプリケーションモジュールあなたはAppServices
間の循環依存を持つ
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import {BaseRequestOptions, HttpModule} from '@angular/http';
import { MaterialModule} from '@angular/material';
import {FlexLayoutModule} from "@angular/flex-layout";
import 'hammerjs';
import { routing, appRoutingProviders } from './app.routing';
import { AppServices } from './app.services';
import {AuthGuard} from "./auth/auth.guard";
import {AuthenticationService} from "./auth/auth.service";
import {AppComponent} from './app.component';
import {AuthComponent} from './auth/auth.component';
import {NotFoundComponent} from './404/not-found.component';
import { HomeComponent } from './home/home.component';
@NgModule({
declarations: [
AppComponent,
AuthComponent,
NotFoundComponent,
HomeComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
HttpModule,
routing,
MaterialModule,
FlexLayoutModule
],
providers: [AppServices, AuthGuard, AuthenticationService],
bootstrap: [AppComponent]
})
export class AppModule { }
がためにあなたに感謝し使用することができます回避するに
ソリューションと説明。私はそれをたくさんいただきありがとうございます – antonyboom