angular - "Circular dependency detected"警告 - Angular

标签 angular typescript

这是我在网络浏览器中收到的警告。我想知道原因以及如何解决它。

客户端:135 检测到循环依赖: src\app\employee\employee.component.ts -> src\app\shared\service\employee.service.ts -> src\app\employee\employee.component.ts

Circular dependency detected waring displayed in the browser

这是我的 employee.component.ts 文件。

import {Component, OnInit} from '@angular/core';
import {EmployeeService} from '../shared/service/employee.service';
import {Employee} from '../shared/model/employee/employee.model';

@Component({
  selector: 'app-employee',
  templateUrl: './employee.component.html',
  styleUrls: ['./employee.component.scss']
})
export class EmployeeComponent implements OnInit {

  activeEmployee: Employee;

  constructor(private employeeService: EmployeeService) {
    this.activeEmployee = this.employeeService.getActiveEmployee();
  }

  ngOnInit(): void {
  }

  closeDialog(): void {
    // this.employeeService.dialogRef.close();
    this.employeeService.closeDialogBox();
  }
}

这是我的 employee.service.ts 文件。

import {Injectable} from '@angular/core';
import {Employee} from '../model/employee/employee.model';
import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';
import {EmployeeComponent} from '../../employee/employee.component';
import {Position} from '../model/employee/position.enum';
import {Status} from '../model/employee/status.enum';
import {Gender} from '../model/gender.enum';

const employeeSample = new Employee(2,
  'John Doe',
  '22, Sample Road, Sample 03',
  new Date(Date.parse('01/01/1995')),
  'XXXXXXXXX',
  '94-XXXXXXXX',
  'john@temporary-mail.net',
  Gender.MALE,
  Position.INTERN,
  Status.ACTIVE,
  null // password
);

@Injectable({
  providedIn: 'root'
})
export class EmployeeService {

  activeEmployee = employeeSample;
  dialogConfig: MatDialogConfig = new MatDialogConfig();
  dialogRef!: MatDialogRef<any>;

  constructor(public dialog: MatDialog
  ) {
    this.dialogConfig = {
      width: '60%',
      height: '100%',
      disableClose: true
    };
  }

  openDialogBox(): void {
    this.dialogRef = this.dialog.open(EmployeeComponent, this.dialogConfig);
  }

  closeDialogBox(): void{
    this.dialogRef.close();
  }

  getActiveEmployee(): Employee{
    return this.activeEmployee;
  }

}

最佳答案

那是因为你在 employee.component.ts 中注入(inject)了 employee.service.ts ,反之亦然。

理想情况下,服务不应控制 UI 组件。那是 component.ts 的工作。理想情况下,服务应与数据转换一起使用。

openDialogBox()closeDialogBox() 方法移动到 employee.component.ts 中,并从您的文件中删除该组件的引用服务。

关于angular - "Circular dependency detected"警告 - Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66524979/

相关文章:

node.js - webpack 如何以及在哪里使用 tsconfig.file 和 tsc

angular - 在 Angular 的 http 订阅操作中使用 ngx-spinner

setTimeout 的 Angular2 异步测试问题

angular - 使用 NgRx 时如何避免不必要的 API 调用

angular - 需要阻止右键单击 PDF Angular 2

angular - typescript 错误 "incorrectly implements interface"类型 'Subject<boolean>' 不可分配给类型 'Subject<boolean>'

javascript - 如何使用 nz-radio-group 以 Angular 显示和隐藏其他项目

c# - 如何将文件从 Angular 上传到 ASP.NET Core Web API

javascript - 有没有办法将回调函数转换为 TypeScript/JavaScript 中的生成器?

android - 应用程序进入后台时未触发 ionic 事件(平台暂停)