2016-12-28 3 views
3

Я реализую диалоговый компонент Материал2 и столкнулся этим вопрос:Передачи входных значений Диалога компоненты

Я хочу, чтобы сделать общий диалог для всех типов подтверждения сообщений, в которых разработчик может вводить текст в диалоговое окно согласно бизнес-требованиям. Но, согласно docs, таких положений нет. У нас есть работа вокруг для того же самого, или я должен опубликовать его как запрос функции на github?

export class ConfirmationDialogComponent implements OnInit { 

@Input() confirmationText: string; 
@Input() confirmationTitle: string; 
@Input() confirmationActions: [string, string][] = []; 

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

ngOnInit() { 
} 

} 

Вызов, как это:

let dialogRef = this.dialog.open(ConfirmationDialogComponent); 
+0

Пожалуйста, пост код – yurzui

+0

@yurzui Добавлен код –

+1

Check http://stackoverflow.com/questions/34205593/working-example-of-angular-2-0-material-mddialog-with-angular - 2-0/40185852 # 40185852 См. Шаг 8 – yurzui

ответ

10

открыт даст вам экземпляр компонента, означает, что вы можете INJECT, что вы хотите, чтобы это так:

openDialog() { 
    let dialogRef = this.dialog.open(DialogOverviewExampleDialog); 
    let instance = dialogRef.componentInstance; 
    instance.text = "This text can be used inside DialogOverviewExampleDialog template "; 
    console.log('dialogRef',dialogRef); 
    } 

Тогда, очевидно, внутри DialogOverviewExampleDialog вы можете сделать:

this is the text {{text }} 

Plunker

Что я обычно делаю, я бы создать объект конфигурации, который понимает мой компонент, а затем я передам это при открытии модального:

private config = { 
    title :"Hello there ", 
    text :"What else ? " 
}; 

openDialog() { 
    let dialogRef = this.dialog.open(DialogOverviewExampleDialog); 
    let instance = dialogRef.componentInstance; 
    instance.config = this.config; 
    console.log('dialogRef',dialogRef); 
    } 

А потом внутри модального компонента :

<div class="my-modal"> 
    <h1>{{config.title}}</h1> 
    <p>{{config.text}}</p> 
</div> 
+0

благодарю за это. Мне нужно было передать параметры перед инициализацией компонента. Для этого есть еще один поток: https://stackoverflow.com/questions/40648252/how-can-i-pass-a-service-variable-into-an-angular-material-dialog –

Смежные вопросы