【发布时间】:2018-09-26 13:13:30
【问题描述】:
我有一个 Angular4 应用程序,它从表单中捕获数据并存储在 DynamoDB 中。它使用 ngModel 来支持双向数据绑定,并且在显示上看起来都很好。由于键入为 'text' 的输入字段绑定到 Typescript 'number' 字段,问题开始出现。似乎正在将对象值的类型更改为“字符串”。我只需将 HTML 输入类型更改为“数字”,除了表单字段上不必要的和不需要的增量/减量装饰器(并且隐藏它们似乎支持有限)。所以我很好奇是否有另一种方法来保持数据结构按需要输入......如果这是 ngModel 中的一个错误......或者输入类型只需要是“数字”。
我的 sample.component.ts 文件中的结构如下所示:
export class Course {
Id: number;
Name: string;
}
...
courseInstance: Course;
saveCourse() {
JSON.stringify(this.courseInstance);
}
我的 sample.component.html 文件如下所示:
<div>
<label for="courseid">Course ID: </label>
<input type="text" class="form-control"[(ngModel)]="courseInstance.Id" name="courseid">
</div>
<div>
<label for="courseName">Course Name: </label>
<input type="text" class="form-control"[(ngModel)]="courseInstance.Name" name="courseName">
</div>
<div>
<button type="button" class="btn btn-info btn-lg" (click)="saveCourse()">Save</button>
</div>
JSON.stringify(this.courseInstance) 的输出结果类似于
{"Id":"100","Name":"Test course"}
注意以字符串形式表示的值 100。
如果我不使用表单,而只是创建一个实例,例如
courseInstance: Course = {
Id: 100,
Name: 'Test course'
};
那么当输出JSON.stringify(courseInstance)的结果时;我明白了
{"Id":100,"Name":"Test course"}
如果我尝试使用 PutItem 将对象存储在 DynamoDB 中,当数据来自 HTML 表单时,Id 值无法通过类型检查。
我原以为 Typescript 中的输入优先于 HTML 'text' 输入类型。
【问题讨论】:
-
type="text"表示字符串。改为number -
请点击对您最有帮助的答案左侧的复选标记来关闭您的问题
标签: javascript angular typescript ngmodel