Angulaire 2 ne peut pas résoudre tous les paramètres de service
J'ai deux services: LoginService et UserService. Je suis en train d'injecter UserService en LoginService et l'application ne s'exécute pas.
Dans la console, j'ai l'erreur:
Erreur: ne Peut pas résoudre tous les paramètres pour UserService: ([object object],
?). au SyntaxError.ZoneAwareError
(http://localhost:4200/polyfills.bundle.js:7156:33) à
SyntaxError.BaseError [en tant que constructeur]
c'est mon LoginService:
import {UserService} from '../services/user.service';
@Injectable()
export class LoginService {
constructor(public _http: Http,public us:UserService) {
}
et UserService:
@Injectable()
export class UserService {
constructor(private _http: Http , public _ls: LoginService) {
}
angulaire module:
import {LoginService} from './services/login.service';
import {UserService} from './services/user.service';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
],
exports: [BrowserModule, SlimLoadingBarModule],
providers: [UserService, LoginService, appRoutingProviders],
bootstrap: [AppComponent]
})
export class AppModule { }
s'il vous plaît ajouter le module angulaire et votre
Vous venez de créer une dépendance circulaire
UserService
code.Vous venez de créer une dépendance circulaire
OriginalL'auteur Mohammed Yassine CHABLI | 2017-06-05
Vous devez vous connecter pour publier un commentaire.
Vous avez une référence circulaire.
Votre
UserService
nécessiteLoginService
, etLoginService
nécessiteUserService
.Supprimer l'une des dépendances. E. g. refactoriser votre UserService de sorte qu'il ne nécessite pas une référence à LoginService
Retirez l'une des dépendances. E. g. refactoriser votre UserService de sorte qu'il ne nécessite pas une référence à LoginService
c'est la seule solution possible ?
Oui, c'est le la solution.
OriginalL'auteur Steve Land
Que les autres posté mentionné une dépendance circulaire... vous pouvez envisager d'utiliser
forwardRef()
pour résoudre ce problème.En un mot, nous pouvons injecter une Référence vers l'Avant au lieu de la véritable service. Ainsi, le service d'injection sera reporté. Ainsi, la dépendance circulaire est résolu.
Voici un exemple de code:
Vous pouvez vérifier cette page pour plus de détails.
Je pense qu'il devrait être quelque chose comme ceci:
constructor(@Inject(forwardRef(() => NameService)) nameService: NameService) { this.name = nameService.getName(); }
OriginalL'auteur Scott McMaster