請幫忙。我無法創建一個總是將文本輸入設置爲大寫的指令。它似乎在查看用戶界面,但模型綁定顯示最後輸入的字符仍然以小寫字符顯示。Angular 2指令使用ngModelChange將輸入字段設置爲大寫
下面是我的HTML的一部分:
<div>
<md-input-container fxFlex>
<textarea #listCode mdInput [(ngModel)]="listInfo.code" placeholder="List Code"
uppercase-code maxlength="50" rows="3"
required></textarea>
<md-hint align="end">{{listCode.value.length}}/50</md-hint>
</md-input-container>
{{listInfo.code}}
</div>
下面
是指令:
import { Directive } from '@angular/core';
import { NgControl } from '@angular/forms';
@Directive({
selector: '[ngModel][uppercase-code]',
host: {
'(ngModelChange)': 'ngOnChanges($event)'
}
})
export class UppercaseCodeDirective {
constructor(public model: NgControl) {}
ngOnChanges(event) {
var newVal = event.replace(/[^A-Za-z0-9_]*/g, '');
newVal = newVal.toUpperCase();
this.model.valueAccessor.writeValue(newVal);
}
}
謝謝你的回覆,但我的問題是與綁定。我修改了你的plunker代碼來顯示:[link](http://plnkr.co/edit/kKzD7TL0I7z391XwhIlO?p=preview)。當我在文本框中輸入時,右側顯示的值仍然具有小寫值。 –
你必須在組件中處理它,並且指令在這種情況下不起作用,它也是一個文本區域。 – Aravind
我明白了,我會嘗試創建一個自定義組件。謝謝! –