2016-12-02 4 views
3

私はIonic modalを使ってアルバム変数を変更しています。イオンモーダル変化検出

addMedias() { 
    let self = this; 
    let profileModal = self.modalCtrl.create(AlbumAddPage, { album: self.album }); 
    profileModal.onDidDismiss(data => { 
     self.zone.run(() => { 
     console.log("ALBUM " + data.album) 
     self.album = data.album; 
     }) 
    }); 
    profileModal.present(); 
    } 

Iは、私は角度ゾーンを使用しようとしたが、onDidDismiss()が呼び出されたときに、このコンポーネントのビューが更新されない、ChangeRefDetectormarkForCheck()detectChanges()で変化検出を強制しようとしました。 考えていますか?

編集:ここではモーダルコードです:

@Component({ 
    selector: 'page-album-add', 
    templateUrl: 'album-add.html' 
}) 
export class AlbumAddPage { 
    album: any; 

    constructor(
    private navParams: NavParams, 
    public navCtrl: NavController, 
    private viewCtrl: ViewController, 

) { 
     this.album = navParams.data.album; 

    } 

    addMedias(asset){ 

     this.album.assets.push(asset); 
     this.viewCtrl.dismiss({album:this.album}); 

    } 

}

+0

を使用すると、モーダルページのコードを共有することができます? –

+0

確かに、編集を参照してください;) –

+0

コンソールがデータを記録していますか? –

答えて

1

[OK]を、私はトリックを発見しました!

親の値が変更された場合、角度は「変更された」と検出されません。同じアルバムインスタンスのモーダルで作業しているため、親はalbumをモーダルで戻して変更しません。

私は(正しい方向に私を入れてhereリンクを参照)、アルバムの新しいインスタンスを作成し、それを動作させるために私のモーダルにそれを渡すために持っていた:

 let self = this; 
     let album = this.album; // Copies the album 
     this.album = []; // Changes the album 
     let editionModal = self.modalCtrl.create(AlbumEditionPage, { 
      album: album 
     }); 
     editionModal.onDidDismiss(data => { 
      setTimeout(function() { 
       console.log("new album data from edition : ") 
       self.album = data.album 
       console.log(data.album); 
       console.log(self.album); 
      }, 0) 

     }); 
関連する問題