Ich habe das offizielle Angular.io Tutorial auf Dynamic Forms bearbeitet, um ein Formular Steuerelement/Eingabefeld vom Typ "Nummer" hinzuzufügen.Gibt es eine Möglichkeit zum Erstellen einer 'Nummer' Eingabe FormControl in Angular 2 Reactive Forms
https://plnkr.co/edit/NslBCrFZLQnLblAqcmzV
NumberQuestion Klasse
import { QuestionBase } from './question-base';
export class NumberQuestion extends QuestionBase<string> {
controlType = 'numberbox';
type: string;
constructor(options: {} = {}) {
super(options);
this.type = options['type'] || '';
}
}
neues NumberQuestion erstellen:
//...
new NumberQuestion({
key: 'years',
label : 'Years active',
type : 'number',
order : 4
})
Vorlage:
<div [formGroup]="form">
<label [attr.for]="question.key">{{question.label}}</label>
<div [ngSwitch]="question.controlType">
<input *ngSwitchCase="'textbox'" [formControlName]="question.key"
[id]="question.key" [type]="question.type">
<input *ngSwitchCase="'numberbox'" [formControlName]="question.key"
[id]="question.key" [type]="question.type">
<select [id]="question.key" *ngSwitchCase="'dropdown'" [formControlName]="question.key">
<option *ngFor="let opt of question.options" [value]="opt.key">{{opt.value}}</option>
</select>
</div>
<div class="errorMessage" *ngIf="!isValid">{{question.label}} is required</div>
</div>
Wenn Sie auf den Load Defaults klicken Wenn Sie auf die Schaltfläche "Speichern" klicken, werden Sie feststellen, dass das Wertobjekt des Formulars den numerischen Typ des Formulars "Jahre aktiv" enthält.
Wenn Sie jedoch zuerst in das Steuerelement "Jahre aktiv" eingeben und dann auf Speichern klicken, sehen Sie, dass der Wert in eine Zeichenfolge umgewandelt wurde.
Ich verstehe, dass das normal ist, wie hier beschrieben: https://stackoverflow.com/a/35791893/2025271
Ich mag würde wissen, ob es einen Weg gibt, Angular die Formcontrol zu instruieren Nummerntyp Eingänge als „Zahlen“ zu erhalten, beim Zugriff auf ihren Wert .
Ich weiß, dass ich dies manuell tun kann, mit parseInt(), um Wert bei Änderung zu bearbeiten, aber ich versuche zu finden, ob es eine eingebaute Möglichkeit ist, es zu tun.
Vielen Dank helfen, aber ich habe schon etwas sehr ähnliches getan. Ich suche nach einem eingebauten Weg, um es zu tun, wenn es das gibt. – ktsangop
Ich glaube nicht, dass es ein eingebautes Problem gibt, da die Zahleneingabe als Texteingabe betrachtet wird. Als eine andere Lösung können Sie eine benutzerdefinierte Komponente erstellen, die die Zahleneingabe enthält, aber eine Ganzzahl als Wert zurückgibt –