Передача данных в MdDialog больше не работает

Я хочу передать данные в диалог, но так, как это должно быть сделано (согласно нескольким примерам, найденным в Интернете, например Использование данных MdDialogConfig в Angular 2) не работает.

Я получаю следующую ошибку:

 Property 'data' does not exist on type 'MdDialogConfig'

Когда я смотрю на код MdDialogConfig, этого свойства действительно не существует (больше)

Я использовал пример, который можно найти как принятый ответ на тему выше, но он не работает. Пример кода:

const config = new MdDialogConfig();

config.data = [
   // for example:
   'value 1',
   'value 2'
];

const dialogRef = this.dialog.open(DialogComponent, config);

Просматривая остальную часть кода, я не вижу другого способа передать данные напрямую. Я мог бы вернуться к использованию отдельной службы для передачи данных из компонента в диалоговое окно, но это далеко не идеально.

Есть ли правильный способ передачи данных в диалог?

Я использую версию 2.0.0-бета.1


person Walter Brand    schedule 27.03.2017    source источник
comment
Я вижу, что доступна более новая версия, в которой, похоже, есть правильные данные. Проверяю в данный момент   -  person Walter Brand    schedule 27.03.2017
comment
Да, это помогло. К сожалению, API для включения темы также изменилось. Разочаровывает внесение большего количества изменений, чем я ожидал....   -  person Walter Brand    schedule 27.03.2017
comment
Это проблема снова в 4.2.3.   -  person isherwood    schedule 11.07.2017


Ответы (1)


Вы можете создать свой собственный надувной компонент (обратите внимание на поле подробностей).

export class DialogDetailComponent implements OnInit {

    @Input() detail: Detail;

    constructor(public dialogRef: MdDialogRef<DialogDetailComponent>) {
    }

    ngOnInit() {
    }

    close() {
        this.dialogRef.close();
    }

}
export interface Detail { }

И создайте метод, который открывает этот диалог в вашей службе.

openDialogDetail(c: Type<DialogDetailComponent>, detail: Detail, afterClosed?: (data?) => any, type?: number, width: string = "80%", height: string = "80%", disableClose = false) {

    let dialogRef = this.openDialog(c, afterClosed, width, height, disableClose);

    if (detail)
        dialogRef.componentInstance.detail = detail;

    return dialogRef;

}
person Michele Sapignoli    schedule 27.03.2017
comment
Спасибо. У меня была проблема в том, что в 2.0.0-бета.1 свойство данных не было реализовано. Оказывается, в 2.0.0-beta.2 он вернулся. - person Walter Brand; 27.03.2017
comment
Рад слышать. Однако вы можете использовать эту стратегию, если вам нужна большая гибкость. До свидания! - person Michele Sapignoli; 29.03.2017