如果我更改值ngmodel值更新错误,则使用了一个第三方下拉菜单和日历组件。它必须采用当前值,而不是原来的值
如何将当前值更新到ngmodel ..?请提出好的答案
复制过程:
1.run示例链接
3。请参阅控制台日志,当前值使用参数获取,但是ngmodel显示旧值
HTML文件
<link href="https://cdn.syncfusion.com/ej2/material.css" rel="stylesheet">
<ejs-datepicker id="date" (change)="onChange($event)" [(ngModel)]="ModelDate"> </ejs-datepicker>
<ejs-dropdownlist id='ddlelement' [dataSource]='data' [(ngModel)]='Modelvalue' placeholder='Select a game' (change)="onDropChange($event)"></ejs-dropdownlist>
{{ModelDate}}
ts文件
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
public ModelDate : any ;
public data: string[] = [ 'Badminton', 'Basketball', 'Cricket', 'Football' ];
// set a value to pre-select
public Modelvalue: string = 'Badminton';
onChange(args){
// debugger
console.log("NgModelvalue:" + this.ModelDate);
console.log("Selected value:" +args.value);
}
onDropChange(args){
debugger
// args.dataBind();
console.log("NgModelvalue:" + this.Modelvalue);
console.log("Selected value:" +args.value);
}
}
答案 0 :(得分:2)
这是预期的行为,并且与更改事件有关。基本上,当更改事件被触发时,ngModel的事件部分尚未更新。
基本上,您需要将[ngModelChange)与[ngModel]分开使用。
答案 1 :(得分:1)
用(ngModelChange)函数替换(change)函数。因为更新模型值需要花费更多时间,并且日志会提前打印出来。
尝试一下-
<ejs-dropdownlist id='ddlelement' [dataSource]='data' [(ngModel)]='Modelvalue' placeholder='Select a game' (ngModelChange)="onDropChange($event)"></ejs-dropdownlist>
每当更改模型值时,它将打印数据。
答案 2 :(得分:1)
对于下拉菜单,您使用了change()事件。而不是更改,请使用ngModelChange()。 通过使用ngModelChange,您的ngModel将更新。
<ejs-dropdownlist id='ddlelement' [dataSource]='data' [(ngModel)]='Modelvalue' placeholder='Select a game' (ngModelChange)="onDropChange($event)"></ejs-dropdownlist>
答案 3 :(得分:0)
到目前为止,您使用过什么?您能告诉我一些代码吗?我认为属性绑定或双向绑定[()]会解决您的prbolem