Обнаружение ионных модальных изменений
У меня есть компонент, использующий ионную модальную для изменения переменной альбома.
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();
}
Я попытался заставить обнаружение изменений с помощью ChangeRefDetector
markForCheck()
и detectChanges()
, тогда я попытался использовать угловые зоны, но когда onDidDismiss()
вызывается, вид этого компонента не обновляется.
Есть какие-нибудь мысли ?
Правка: вот модальный код:
@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});
}
}
1 ответ:
Хорошо, я нашел трюк !
Когда значение
album
изменяется в родителе, angular не обнаруживает его как "измененное" : так как я работаю в модалях с тем же экземпляром альбома, родитель не видит никаких изменений сalbum
, переданным обратно модалом.Мне пришлось создать новый экземпляр альбома и передать его моему модальному, чтобы заставить его работать (см. здесь ссылка, которая привела меня в нужное направление):
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) });