2016-12-20 34 views
4

我開發了一個自定義指令,修剪輸入控件的值。 請找到相同的代碼:在Angular2 ngModel值沒有更新onBlur事件的自定義指令

import { Directive, HostListener, Provider } from '@angular/core'; 
import { NgModel } from '@angular/forms'; 

@Directive({ 
selector: '[ngModel][trim]', 
providers: [NgModel], 
host: { 
    '(ngModelChange)': 'onInputChange($event)', 
    '(blur)': 'onBlur($event)' 
} 
}) 

export class TrimValueAccessor { 
onChange = (_) => { }; 
private el: any; 
private newValue: any; 

constructor(private model: NgModel) { 
    this.el = model; 
} 

onInputChange(event) { 
    this.newValue = event; 
    console.log(this.newValue); 
} 

onBlur(event) { 
    this.model.valueAccessor.writeValue(this.newValue.trim());  
} 
} 

問題是ngModel不onBlur事件更新的價值。 我試圖在onModelChange事件修剪值,但它不允許兩個詞之間的空間(例如,ABC XYZ)

任何建議將是有益的。

+1

你能想出一個暴徒作爲有人試圖測試它嗎? – micronyks

回答

2

請onblur事件,而不是現有的code.It添加下面的代碼行會的工作:

this.model.control.setValue(this.newValue.trim()); 

謝謝!