【问题标题】:ERROR Error: Uncaught (in promise): Error: NG0200: Circular dependency in DI detected for UserServiceERROR 错误:未捕获(承诺中):错误:NG0200:为 UserService 检测到 DI 中的循环依赖
【发布时间】:2021-05-25 19:10:07
【问题描述】:

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

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

不知道循环依赖在哪里

user.model.ts:

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

user.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();
    }

}

谢谢你帮助我

【问题讨论】:

  • 尝试从UserService 中删除构造函数。你为自己注入服务
  • 没关系。我必须删除 user.Service.ts 中的 constructor(private userService: UserService) { }

标签: angular typescript dependencies circular-dependency


【解决方案1】:

您在UserService 中注入UserService。我猜你要么想注入其他东西,要么什么都不注入

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

  constructor() {}
  //...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 2021-03-26
    • 2018-06-06
    • 1970-01-01
    • 2022-11-11
    • 2022-12-19
    • 2022-07-19
    • 2021-11-28
    相关资源
    最近更新 更多