助けてください。テキスト入力を常に大文字に設定する指示文を作成するのに問題があります。これはユーザーインターフェイスを見ているようですが、モデルバインドで最後に入力された文字はまだ小文字で表示されています。以下 角度2 ngModelChangeを使用して入力フィールドを大文字に設定する命令
<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);
}
}
返信ありがとうございますが、私の問題はバインディングである。プランナーコードを変更して[link](http://plnkr.co/edit/kKzD7TL0I7z391XwhIlO?p=preview)を表示しました。私がテキストボックスに入力したとき、右の表示された値はまだ小文字の値を持っています。 –
あなたはコンポーネントでそれを処理しなければなりません。この場合、ディレクティブは動作しません。また、テキスト領域です。 – Aravind
私は、カスタムコンポーネントを作成しようとしています。ありがとう! –