Angular (ngModel)未反映在更改事件处理程序中

Angular (ngModel)未反映在更改事件处理程序中,angular,typescript,angular-ngmodel,angular2-forms,angular2-ngmodel,Angular,Typescript,Angular Ngmodel,Angular2 Forms,Angular2 Ngmodel,在我使用Angular 2开发的应用程序中,在选择下拉列表时,ngModel会更新组件中声明的变量,但该值不会反映在下拉列表的“更改”事件处理程序中 下面是相关的HTML代码 选择墙和板 {{selectedWall.Id} {{wall.Item.Title} class=“btn活动元素btn lg width-50”*ngIf=“itemAction=='0'”> 复制 移动 这是打字稿 import{Component,ViewChild,ElementRef,OnInit,Inpu

在我使用Angular 2开发的应用程序中,在选择下拉列表时,ngModel会更新组件中声明的变量,但该值不会反映在下拉列表的“更改”事件处理程序中

下面是相关的HTML代码


选择墙和板
{{selectedWall.Id}
{{wall.Item.Title}
class=“btn活动元素btn lg width-50”*ngIf=“itemAction=='0'”>
复制
移动
这是打字稿

import{Component,ViewChild,ElementRef,OnInit,Input}来自“@angular/core”;
从'@angular/Router'导入{Router};
//从'js/ng2 bootstrap/bundles/ng2 bootstrap.umd.js'导入{MODAL_指令,BS_视图_提供程序};
从“ng2引导/ng2引导”导入{ModalDirective};
@组成部分({
选择器:“移动复制项”,
templateUrl:'app/components/forms/componentManagement/movecopyForm.component.html'
})
导出类movecopyComponent实现OnInit{
@ViewChild('mcFormModal')模式:ModalDirective;
私有用户:用户;
私有项动作:项动作;
私有模式:字符串;
@Input()组件:viewItem;
墙:视图项[];
selectedWall:viewItem;
构造函数(私有_contentService:contentService,
私有的alertService:alertService,
专用路由器(路由器){
}
ngOnInit():void{
//为用户获取所有墙。
this.walls=[];
this.selectedWall=新建视图项();
这是loadWalls();
}
私人承重墙(){
这是.\u contentService.getAllWalls()
.subscribe(数据=>此.wallListReceived(数据),
error=>this.handleError(error));
}
已收到私人wallListReceived(数据:任意){
this.walls=数据;
}
隐藏(){
this.modal.hide();
}
已选择私有墙():void{
console.log(“选定的墙”);
console.log(this.selectedWall.Id);
//给墙找些木板。
这是.getWallContent();
console.log(this.selectedWall.Id);
}
{{selectedWall.Id}
确实会得到更新,但由于
wallSelected
方法中的某些原因,
this.selectedWall.Id
会不断返回0


我在这里做错了什么?值没有反映在这里的原因可能是什么?

元素上的事件顺序未定义。您不能期望
ngModel
在处理
更改
事件的事件处理程序之前更新模型

改用

(ngModelChange)="wallSelected()"

因为
ngModel
只在更新模型后发出
ngModelChange
,我想你是指
change
,而不是问题标题中的
click
click
对我来说没有意义。是的,对不起。我确实是指更改。