ngModelChange为什么会发出前一个输入值?
我有一个(非常)简单的Angular2组件,只有一个文本字段。我需要它,以便每次对此字段进行任何更改时,控制台都会记录该字段的值。 IE如果有人输入“ABCD”,控制台应该记录:“A”,“AB”,“ABC”,“ABCD”。ngModelChange为什么会发出前一个输入值?
但是我看到的情况是控制台在新输入注册之前记录了字段的PREVIOUS值。相反,我得到:“”,“A”,“AB”,“ABC”。
我该如何让控制台在输入新字符后记录文本字段的值?
非常感谢。
我迄今为止代码:
import { Component, OnInit, ViewChild, EventEmitter, Output } from '@angular/core';
import { NgForm } from '@angular/forms';
@Component({
selector: 'modal-test-form',
template: `
<form>
<input name="data" placeholder="Type something" ngModel (ngModelChange)="onTextChange()"/>
</form>
`,
//templateUrl: './modal-test-form.component.html',
styleUrls: ['./modal-test-form.component.css']
})
export class ModalTestFormComponent{
@ViewChild(NgForm) testForm : NgForm;
constructor() { }
onTextChange() {
console.log(this.testForm.form.value);
}
}
改变你的方法
(ngModelChange)="onTextChange($event)"
和组件类
onTextChange(val: string): any {
console.log("updated value is --->", val);
}
修正了它!谢谢 – SemperCallide
欢迎您... :) –
变化根据在那里你CONSOLE.LOG从形式值从
(ngModelChange)="onTextChange()"
的方法,我想你已经写了一个“错误”,当你提交你的问题(??),其实你的意思是你有这个方法在你的html:
(ngModelChange)="emitDataValue()"
但无论如何,ch把它变成:
(keyup)="emitDataValue()"
它似乎按照你的意愿工作。
你对错误是正确的 - 谢谢 – SemperCallide
什么 “旧值”? – Alex
@ AJT_82所以现在发生的事情是console.log(this.testForm.form.value)在输入新字符之前记录表单的值。所以如果我刚刚输入“ABC”,控制台将只记录“AB”。我希望它记录“ABC”,这是当前值。 – SemperCallide