首页 > 解决方案 > ERROR 错误:未捕获(承诺中):错误:NG0200:为 UserService 检测到 DI 中的循环依赖

问题描述

我有这个“错误错误:未捕获(承诺):错误:NG0200:为用户服务检测到 DI 中的循环依赖。”

auth.components.ts 使用类 UserService 和 User user.service.ts 使用类 User

我不知道循环依赖在哪里

user.model.ts:

export class User{
    constructor(public login: string,
                public Mdp : string){
    }
}

用户.Service.ts :

import 'rxjs/RX';
import { User } from '../models/User.model';
import { Subject } from 'rxjs';
import { Injectable } from '@angular/core';

@Injectable()

export class UserService {
  private users!: User[];
  userSubject = new Subject<User[]>();

  constructor(private userService: UserService) {
  }

  emitUsers() {
    this.userSubject.next(this.users.slice());
  }

  addUser(user: User) {
      this.users.push(user);
      this.emitUsers();
  }

  logUser(){
    console.log("la");
  }
}

auth.component.ts:

import { ThisReceiver } from '@angular/compiler';
import 'rxjs/RX';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';
import { Router } from '@angular/router';

import { User } from '../models/User.model';
import { Subscription } from 'rxjs/Subscription';
import { UserService } from '../services/user.Service';


@Component({
  selector: 'app-auth',
  templateUrl: './auth.component.html',
  styleUrls: ['./auth.component.scss']
})
export class AuthComponent implements OnInit, OnDestroy {
  
  users: User[] = [];
  userSubscription: Subscription = new Subscription;
  userForm!: FormGroup;
   
  constructor( 
    private UserService: UserService,
    private formBuilder: FormBuilder,
    private router : Router
    ) {}

    ngOnInit() {
      this.initForm();
    }
  
    initForm(){
      this.userForm = this.formBuilder.group({
        login:['',Validators.required],
        Mdp:['',Validators.required],
      });
    }
  
    onSubmitForm(){
      const formValue= this.userForm.value;
      const newUser = new User (
        formValue['login'],
        formValue['Mdp']
      );
  
        console.log(newUser);
  
        this.UserService.logUser();
    }
  
    ngOnDestroy() {
      this.userSubscription.unsubscribe();
    }

}

谢谢你的协助

标签: angulartypescriptdependenciescircular-dependency

解决方案


You are injecting UserService inside UserService. I'm guessing you either want to inject something else, or nothing at all there

export class UserService {
  private users!: User[];
  userSubject = new Subject<User[]>();

  constructor() {}
  //...
}

推荐阅读