我无法注入MAT_DIALOG_DATA!错误:必须从注入上下文中调用inject()

时间:2019-03-25 00:45:04

标签: angular dialog angular-material

我正在使用MAT_DIALOG_DATA将数据传递到对话框,但是,在浏览器控制台中出现此错误。

Uncaught Error: inject() must be called from an injection context
    at injectInjectorOnly (core.js:1767)
    at inject (core.js:1778)
    ...
    ...
    ...

首先,我必须指出我正在使用角度7。

我观看了许多视频并阅读了许多文章,这些文章表明我在项目中包含的内容已足够: -我从角形材料中导入了MAT_DIALOG_DATA。 -我使用了对话框参考。 -我在构造函数中定义注入。

此处是component.ts代码:

import { Component, OnInit, inject } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material';

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

  constructor(
    @inject(MAT_DIALOG_DATA) public data: any,
    public matDialogRef: MatDialogRef<TableEditorDialogComponent>
   ) { }

  ngOnInit() {
  }

  getMessageId(id : Number){
  }
}

我希望将数据传递给对话框。 现在发生了什么事。我的程序编译成功,但是在浏览器中,该程序停止运行并显示错误消息。

Uncaught Error: inject() must be called from an injection context
    at injectInjectorOnly (core.js:1767)

1 个答案:

答案 0 :(得分:1)

导入应该为Inject,而不是inject。因此,请使用以下导入

import { Component, OnInit, Inject } from '@angular/core';

而且,在组件的构造函数中

constructor(public dialogRef: MatDialogRef<TableEditorDialogComponent>,
    @Inject(MAT_DIALOG_DATA) public data: any) { }

Correct Injection of MAT_DIALOG_DATA