2017-12-15 15 views
1

こんにちは、オブジェクトの配列を素材ダイアログに渡そうとしています。ここで私はそれをやっている方法です。コンポーネントクラスで四角形の四角形のダイアログボックスがオブジェクトの配列をダイアログボックスに渡します

Model 
export interface IPoducts{ 
    recordname: string; 
    comments: [{ 
     comment: string 
     }] 
} 

関連

 constructor(public dialog: MdDialog, private productService: ProductService){} 
     prod: IProducts[]=[] 
     ngOnInit(): void{ 
    //service getting data from database  

this.productService.getProcessnotes().subscribe(producsts=>this.products=products,error=>this.errorMessage=<any>error); 

     //opening dialgue 
     openDialog(prod:any): void { 
      let dialogRef = this.dialog.open(prodDialog, { 
       width: '400px', 
       height: '500px;', 
      data: this.prod <------------------passing the object array 
       }); 
      }} 

たダイアログボックスの成分を以下有します。

@Component({ 
     selector: proddialog', 
     templateUrl: 'dialogdetails.html', 
    }) 
    export class ProdDialog implements OnInit{ 
      public pnote: IProducts[]; 
      constructor(
      public dialogRef: MdDialogRef<DialogOverviewExampleDialog>, 
     @Inject(MD_DIALOG_DATA) public data: {pnote:this.prod }) { } 
     public pnote: products; 
      onNoClick(): void { 
      this.dialogRef.close(); 
      } 
      public ngOnInit():void{ 
       this.pnote=this.data.prod; 

      } 

In main template button triggers the dialog box by passing a pnote from *ngFor="let pnote of products" 

<button md-raised-button (click)="openDialog(pnote)">Open Dialog</button> 

ダイアログボックスには、私は、このダイアログが飛び出す実行すると

<div> 
    <h2 md-dialog-title>MY DIALOG</h2> 
    <hr> 
    <md-dialog-content> 
     <div*ngFor=prod in products> 
      {{prod.recorname}} 
     </div> 
    <br> 
    <br> 
    <strong>{{data}}</strong> 
    </md-dialog-content> 
    <hr> 
    <md-dialog-actions> 
    <button md-raised-button (click)="onCloseConfirm()">CONFIRM</button>&nbsp; 
    <button md-raised-button (click)="onCloseCancel()">CANCEL</button> 
    </md-dialog-actions> 
</div> 

ですが、データのためだけの銀行を参照してくださいています。 Noeデータ。ダイアログでオブジェクトの配列を渡す方法を教えてください。私のソリューションは他のソリューションに基づいていますが、運はありません。

注:すべてがうまくいきます。オブジェクトの配列が渡されない限り、エラーはありません。

+0

あなたが何らかの形でインデントを再訪もらえますか? 2番目のスニペットは読めるにはあまりにも奇妙です。 –

+0

ちょうどそれが役立つことを願った。主な問題はどこのデータです:this.prod someどのようにダイアログボックスに渡されていない –

答えて

0

this.prodの値は設定されていないため、値はありません。だからどちらかがopenDialogprodを渡すか、そしてthis.prodにメソッドからのパラメータを割り当てる必要があります:

openDialog(prod:any): void { 
    this.prod = prod; // here!! 
    let dialogRef = this.dialog.open(prodDialog, { 
    width: '400px', 
    height: '500px;', 
    data: this.prod // now 'this.prod' will have values! 
    }); 
} 
関連する問題