Sto provando ad avere un formato di campo di input/valori maschera man mano che vengono digitati, mentre il modello attuale mantiene il raw (o formattato in modo diverso) valore. Sto pensando ai numeri di telefono ecc., Ma per semplicità sto usando le lettere maiuscole per i test.Angolare 2 - Maschera di input: la casella di input visualizza il valore formattato, mentre il modello mantiene il valore non formattato
Ho provato un sacco di cose, sperando che sia semplice come una direttiva. Ma non sembra che il valore visualizzato diventi distante dal valore del modulo.
Plunk: http://plnkr.co/edit/VH5zn4S8q28CBpFutBlx?p=preview
Ecco la direttiva:
@Directive({
selector: '[uppercase]',
host: {
'(input)': 'onInputChange()',
}
})
export class UppercaseDirective {
constructor(private model: NgFormControl) { }
onInputChange() {
let newValue = this.model.value.toUpperCase();
this.model.viewToModelUpdate(newValue);
this.model.valueAccessor.writeValue(newValue);
}
}
e la forma:
<form [ngFormModel]='myForm'>
<input [ngFormControl]='myForm.controls.field' uppercase>
<div>
{{ myForm.value.field }}
</div>
</form>
perché no Pipes? Sembra che tu voglia solo un modo diverso di visualizzare il testo. –
Voglio che la formattazione avvenga nella casella di input - una maschera di input. Sto solo visualizzando il valore nella vista a scopo di test. – Steve