Я не могу ввести MAT_DIALOG_DATA!Ошибка: inject () должен быть вызван из контекста внедрения - PullRequest
0 голосов
/ 25 марта 2019

Я использую 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 Ответ

2 голосов
/ 25 марта 2019

Импорт должен быть Inject, а не inject.Итак, используйте следующий импорт

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

А, в конструкторе компонентов

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

Правильная инъекция MAT_DIALOG_DATA

...