角度输入 [type]="'number'" 总是导致值为字符串

Din*_*ino 6 property-binding angular

通常,我会以这种方式声明输入类型(这很好用):

<input [(ngModel)]="input1" type="number" placeholder="Working"/>
Run Code Online (Sandbox Code Playgroud)

但是,我希望类型是动​​态的,因此我使用 property binding [type]="objectType"。为了简化问题,我使用了[type]="'number'".

<input [(ngModel)]="input2" [type]="'number'" placeholder="Not Working"/>
Run Code Online (Sandbox Code Playgroud)

现在的问题是,每当我对 进行更改时input2,它都会转换为字符串。情况并非如此input1- 它仍然是预期行为的数字。如何将属性绑定用于类型并防止其转换​​为字符串?

闪电战

Jun*_*lez 9

这是一个已知问题(请参阅问题#13243)。

目前一个简单的解决方法是为每种类型使用不同的输入:

@Input() public myInputType: string;
Run Code Online (Sandbox Code Playgroud)
<input [(ngModel)]="value" type="number" *ngIf="myInputType === 'number'"/>
<input [(ngModel)]="value" type="text" *ngIf="myInputType === 'text'"/>
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)

  • 不,抱歉,我不清楚,如果输入字段是文本字段,则该值会作为字符串保存到您的模型中。如果它是数字类型,它将保存为数字。因此,如果用户输入一个值,然后动态切换类型,它将在您的模型中保留数字或字符串,并且您刚刚在代码中引入了另一个错误。https://stackblitz.com/edit/angular-g2mryc (2认同)