Angular 7 Material config config конфликт данных ввода данных - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь передать некоторые данные при открытии диалоговой панели материала.Следующий пример - это то, что я узнал из здесь

Обмен данными с компонентом Dialog.

Если вы хотите поделиться данными с вашим диалогом, вы можете использовать опцию dataдля передачи информации в компонент диалога.

let dialogRef = dialog.open(YourDialog, {
  data: { name: 'austin' },
});

Чтобы получить доступ к данным в компоненте диалога, вы должны использовать токен инъекции MAT_DIALOG_DATA:

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

@Component({
  selector: 'your-dialog',
  template: 'passed in {{ data.name }}',
})
export class YourDialog {
  data: any[] = []; // existing code, conflict
  constructor(@Inject(MAT_DIALOG_DATA) public data: any) { }
}

Теперь проблема вв компоненте диалога уже определена и используется переменная data.И имя переменной data, передаваемое в диалог как конфигурация, определяется Angular Material Dialog.Так что это вызывает конфликт имен.Я мог бы изменить существующую переменную data на что-то другое, чтобы уступить место введенному Angular data, но есть ли способ изменить введенное значение data на другое?Благодарю.

1 Ответ

1 голос
/ 07 марта 2019

Вам не нужно хранить одинаковые имена переменных.

constructor(@Inject(MAT_DIALOG_DATA) public anyOtherNameHereIsOk: any) { }

Почему это работает, так как параметр уже имеет @Inject(MAT_DIALOG_DATA), поэтому фактическое имя параметра не имеет значения. Используйте имя, которое лучше всего подходит, учитывая тип данных и то, как они используются (и любые другие правила именования, к которым вы можете привыкнуть).

Stackblitz , см. Класс DialogDataExampleDialog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...