typescript - Begrens lengden på en streng ved hjelp av angular 2/ionic 2
Hvordan kan jeg begrense telefonnummerfeltet til 10 tegn ved å bruke Angular2. Jeg prøvde å bruke ng-maxlength, men det fungerer bare i nettleseren og ikke på Android-enheter.
Jeg fant en kodebit som bruker Angular 1. Men hvordan skriver jeg den samme koden på nytt ved å bruke Angular 2?
app.directive("limitTo", [function() {
return {
restrict: "A",
link: function(scope, elem, attrs) {
var limit = parseInt(attrs.limitTo);
angular.element(elem).on("keypress", function(e) {
if (this.value.length == limit) e.preventDefault();
});
}
}
}]);
<input limit-to="4" type="number" class="form-control input-lg" ng-model="search.main" placeholder="enter first 4 digits: 09XX">
Svar #1
I stedet for å bruke en egendefinert direktiv, kan du bare bruke maxlength-HTML-attributtet og attr-bindingen fra Angular 2 slik: [attr.maxlength]="4"
<ion-input type="text" [(ngModel)]="a.myInput" [attr.maxlength]="4"></ion-input>
Du kan også binde den attributten til en egenskap fra komponenten din for å sette maks lengde dynamisk.
Svar #2
I Angular2 vil det se slik ut:
@Directive({
selector: '[limit-to]',
host: {
'(keypress)': '_onKeypress($event)',
}
})
export class LimitToDirective {
@Input('limit-to') limitTo;
_onKeypress(e) {
const limit = +this.limitTo;
if (e.target.value.length === limit) e.preventDefault();
}
}
Ikke glem å registrere direktivet i NgModule noe slikt som:
@NgModule({
imports: [ BrowserModule ],
declarations: [ App, LimitToDirective ],
bootstrap: [ App ]
})
export class AppModule {}
Og bruk det deretter slik:
<input limit-to="4" type="number" placeholder="enter first 4 digits: 09XX">
Her er Plunker!
