导航到自定义事件中的页面无法正常工作



当我使用此事件导航到页面时:

this.events.subscribe('liveTrackingEvent', (time, unit) => {
        console.log("event triggered");
        this.searchForm.controls['unitID'].setValue(this.unitSelected.unit.name);
        this.GetLiveData();
    });

所有内容都被调用,函数 GetLiveData(( 也被调用。(我没有发布这个函数的代码,因为它是相关的(

但是,当我查看页面时,没有一个元素正在更新。所以这行:

this.searchForm.controls['unitID'].setValue(this.unitSelected.unit.name);
不更新搜索表单控件,

但是当我从页面本身调用此行代码而不在另一个页面上触发事件时,它会顺利运行并更新搜索表单控件。

(就像我出于某种原因在一个单独的线程上(,我把它放在括号之间,因为它只是一个想法。

所以我的问题是:当触发事件时,我如何强制此页面也自行更新?

提前感谢,如果你们需要更多代码,请询问,但这是最相关的代码,因为当它在事件中被调用时,一切都无法正常工作。

通过使用页面生命周期事件而不是来自 ionic 框架的自定义事件,我设法使这项工作完成,甚至拥有更干净的代码。例:

第一页:

GoToLiveTracking(unitID){
    this.navCtrl.push(MapPage, {redirected: true, unitID: unitID});
}

第二页:

ionViewDidEnter(){
    if(this.navParams.get('redirected')){
        let unit_id = this.navParams.get('unitID');
        this.unitSelected = this.completeService.GetUnitByID(unit_id);
        this.searchForm.controls['unitID'].setValue(this.unitSelected.unit.name);
        this.GetLiveData();
    }
}

我只能想到这种行为的一个原因。您正在角度区域之外更新表单。这就是未检测到更改的原因。

为了解决这个问题,将事件的最后 2 行调用包装到"this.ngZone.run((( => { ... }("中。

例如

    this.events.subscribe('liveTrackingEvent', (time, unit) => {
            console.log("event triggered");
            this.ngZone.run(()=>{            
       this.searchForm.controls['unitID'].setValue(this.unitSelected.unit.name);
            this.GetLiveData();
});
        });

相关内容

  • 没有找到相关文章

最新更新