Material(MdDialog)を使用して作成したダイアログのテンプレートコンポーネントに、特定のページからカスタムhtmlを渡したいとします。これまでは単純なデータをテンプレートに渡すことができます:MaterialをAngular 2/4で使用してテンプレートダイアログコンポーネントにhtmlを渡すには
import { Component, OnInit, Input, TemplateRef } from '@angular/core';
import { MdDialog, MdDialogConfig, MdDialogRef } from '@angular/material';
import { DialogComponent } from './dialog.component';
@Component({
selector: 'app-commoncontent',
template: '
<div class="row pull-right">
<button md-raised-button (click)="open()" >{{"addButton" | translate}}
</button>
</div>',
styleUrls: ['./commoncontent.component.css']
})
export class CommoncontentComponent implements OnInit {
constructor(public dialog : MdDialog) { }
ngOnInit() {
}
open() {
let config = new MdDialogConfig()
let dialogRef:MdDialogRef<DialogComponent> =
this.dialog.open(DialogComponent, config);
dialogRef.componentInstance.content = "Hello Angular"
}
}
import { Component, OnInit, Input, TemplateRef } from '@angular/core';
import { MdDialogRef } from '@angular/material'
import { CommoncontentComponent } from './commoncontent.component'
@Component({
selector: 'dialog-common',
template: '
<md-dialog-content class="accent-color">
<form class="form-horizontal" name="dialogForm">
{{content}}
</form>
</md-dialog-content>',
styleUrls: ['./dialog.component.css']
})
export class DialogComponent {
//@Input() templateDialog: TemplateRef<any>
content:string;
constructor(public dialogRef: MdDialogRef<DialogComponent>) {}
}
私はhtmlを渡すことができません。私はそれにng-contentを使うことができますが、それを動作させることはできませんでした。
使用 '<内側のHTMLのための' [innerHTMLプロパティ] = "" にまたがります。ただし、 'DomSanitizer'を通すことを忘れないでください。さもなければエラーを出力します。私はこのためのパイプを実装することをお勧めします。 – Edric
@エドリック、答えはそこに下がります。 – isherwood