ngmodel值更新错误?

时间:2018-09-21 09:19:09

标签: angular typescript angular-ngmodel

如果我更改值ngmodel值更新错误,则使用了一个第三方下拉菜单和日历组件。它必须采用当前值,而不是原来的值

  

样本:   ngmodel not updating

如何将当前值更新到ngmodel ..?请提出好的答案

  

复制过程:

1.run示例链接

  1. 更改下拉值或日历值

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);
  }
}

4 个答案:

答案 0 :(得分:2)

这是预期的行为,并且与更改事件有关。基本上,当更改事件被触发时,ngModel的事件部分尚未更新。

基本上,您需要将[ngModelChange)与[ngModel]分开使用。

在此处查看更多信息:https://github.com/angular/angular/issues/3406

此处:Angular 2 change event - model changes

答案 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