绑定到对象的角度<select>确认更改或恢复为上一个值

时间:2018-07-06 11:25:58

标签: angular html-select confirm revert angular2-ngmodel

我正在尝试实现非常简单的           和组件: 导出类AppComponent {   selectedState:状态= null;   状态:State [] = [     {名称:'Alabama',人口:100000},     {名称:'Alaska',人口:50000}   ];   onStateChange(previousState:State,state:State):void {     //如果我们将状态从“全部”更改为任意,就可以了     如果(previousState === null){       this.selectedState =状态;       返回;     }     //否则,我们希望用户确认该更改     如果(确认('您确定要选择其他状态吗?')){       this.selectedState =状态;     }其他{       //但是不只是`this.selectedState = previousState;`       //我需要继续进行以下肮脏的破解。       //步骤1:更改绑定到[[ngModel]`的属性值,       //到任何一个,除了当前的,所以`null`可以       this.selectedState = null;       //步骤2:将该属性值还原为上一个,       //可笑的是,它已经被设置为前一个,       //因为我们要还原`this.selectedState`,       //同时传递完全相同的`this.selectedState`       //将此方法作为`previousState`参数,       //所以我们实际上是在做`this.selectedState = this.selectedState;`,       //但不是很明显。       //这只能异步执行,       //清除调用堆栈后。       setTimeout(()=> {         this.selectedState = previousState;       },0);     }   } } 我希望评论是不言自明的,至少我尝试将它们写成这样。 正如我在评论中已经提到的,简单this.selectedState = previousState;不起作用,以及省略setTimeout()。我也尝试过,但是没有运气: this.selectedState = previousState; this.changeDetectorRef.detectChanges(); 我的解决方案基于此答案,是的,我也看到了这个答案,但是它对我来说不起作用,因为我将