2017-01-11 5 views
2

У меня есть (очень) простой компонент Angular2 без ничего, кроме текстового поля. Я хочу, чтобы каждый раз, когда в это поле были внесены какие-либо изменения, консоль регистрирует значение поля. IE, если кто-то набирает «ABCD», консоль должна регистрировать: «A», «AB», «ABC», «ABCD».Почему ngModelChange испускает предыдущее значение ввода?

Однако я вижу, что консоль регистрирует ПРЕДЫДУЩИЕ значения поля до того, как был зарегистрирован новый вход. Поэтому вместо этого я получаю: «», «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); 
    } 

} 
+0

, что "старое значение"? – Alex

+0

@ AJT_82 Итак, что происходит прямо сейчас, это то, что console.log (this.testForm.form.value) регистрирует значение формы до того, как был введен новый символ. Поэтому, если я только что ввел «ABC», консоль будет записывать только «AB». Я хочу, чтобы он вместо этого записывал «ABC», который является текущим значением. – SemperCallide

ответ

2

изменить ваш метод

(ngModelChange)="onTextChange($event)" 

и в классе компонентов

onTextChange(val: string): any { 
    console.log("updated value is --->", val); 
} 
+0

Это исправлено! Спасибо – SemperCallide

+0

добро пожаловать ... :) –

1

изменить метод от

(ngModelChange)="onTextChange()" 

согласно тому, где вы console.log значение из формы, я думаю, что вы написали «ошибку», когда вы отправил ваш вопрос (??), и на самом деле вы имеете в виду, что у вас есть этот метод в вашем html:

(ngModelChange)="emitDataValue()" 

Но в любом случае ch ange it:

(keyup)="emitDataValue()" 

похоже, что вы работаете.

+0

Вы правы об ошибке - спасибо – SemperCallide