2017-08-28 48 views
3
傳遞到模態的訪問數據

我正在使用angular 4和ngx-bootstrap打開模態。所有工作都很好,我通過一個組件實現了模態。我也可以通過bsModalRefcontent屬性將數據傳遞到模態。像這樣:ngx-bootstrap模態 - 通過bsModalRef.content

this.bsModalRef = this.modalService.open(MyComponent); 
this.bsModalRef.content.somedata = [...some array of products]; 

這一切都很好,然後我的模態可以訪問一個名爲somedata的屬性。太棒了。我遇到的問題是我想對somedata執行一些計算。假設somedata是一個包含金額的產品列表,我希望模型將金額減少到單個值。我如何知道模態類中的數據何時可用?我可以使用一個setTimeout黑客,它可以工作,但會讓我感到內心煩躁。有沒有像ngOnChanges這樣的生命週期鉤ngx-bootstrap實現,所以我可以知道什麼時候數據屬性設置,並進一步,當它改變?

回答

3

您可以實現二傳手,或方法

​​

記住this.bsModalRef.content由對話組件的所有公共成員(在你的情況爲MyComponent)。

0
在父組件

import { Modal, BSModalContext } from 'ngx-modialog/plugins/bootstrap'; 
import { overlayConfigFactory } from 'ngx-modialog'; 

var dataObject = {data1: "ba vbal", data2 :"bla bla"}; 
this.modal.open(urmodalCpmponent, overlayConfigFactory({data: dataObject}, BSModalContext)) 

模態組件

import { DialogRef } from 'ngx-modialog'; 

constructor(public dialogRef: DialogRef){ 
let context:any = dialogRef.context; 
this.detail = context.data' 
} 
0

一個更好的辦法是使用initialState並通過你需要

this.bsModalRef = this.modalService.open(MyComponent, { 
initialState: { 
    products: [...some array of products] 
} 
}); 

請確保您有一個products什麼陣列在MyComponent

export MyComponent { 
    public products: any[]; 
}