角度错误:依赖项数组必须具有参数

时间:2019-10-08 06:51:25

标签: angular

我在更改对话框形式时遇到此错误。我不再想使用对话框形式,而不再使用表单。现在,当我从构造函数中删除@Inject(MAT_DIALOG_DATA)时,我收到了错误。有想法吗?

构造函数

constructor(
    @Inject(MAT_DIALOG_DATA)
    public data: any,
    private fb:FormBuilder,
    private personService:VehicleService,
    public snack: MatSnackBar,
    private route : ActivatedRoute
) {}

2 个答案:

答案 0 :(得分:1)

Angular使用弱映射和注入令牌进行依赖注入。

如果您删除@Inject,则会留下

public data: any

鉴于弱映射依赖于类,并且注入令牌依赖于提供的字符串,因此Angular无法找到您的数据属性。

这意味着您必须删除这两行

constructor(
    private fb:FormBuilder,
    private personService:VehicleService,
    public snack: MatSnackBar,
    private route : ActivatedRoute
) {}

答案 1 :(得分:1)

bootstrapModule无法加载/查找AppComponent.ts中定义的依赖项之一,这就是为什么出现此错误的原因。

如果您正在寻找缺少的依赖项,

以下是找出缺失的依赖关系的步骤(已在 Angular v8.2.3 上进行了验证):

  • 导航至core.js中的功能convertInjectableProviderToFactory
  • 将调试器放在此函数的最后一行(last else循环)中:

return function(){return new( type .bind.apply(type,__spread([void 0],injectArgs( deps_3 ))))(); };

  • 类型-变量显示问题所在的类的名称
  • deps_3 -显示实际依赖项,其中之一未得到正确评估。
  • 示例:
> export class LoggerService implements Logger {  
>  
>   constructor(private apmService: **ApmService**,
>               private utilService: UtilService) {
>        }

如果以上是错误的课程。

  • type-将显示类的名称,即。 LoggerService
  • deps_3-将显示所有依赖项的列表,如果未找到依赖项,则数组将在其中 是空的。无法评估实际的依存关系