首页 > 解决方案 > 强制角度尊重 json 中的接口类型

问题描述

举个例子:

模型.ts

export interface Item{
  name: string;
  age: string
}

组件.ts

form: FormGroup

constructor(private fb: FormBuilder){}

onInit(){
  this.form = fb.group({
    name: [''],
    age: ['']
})
}
exampleFn(){
  const signature: Item = Object.assign({},this.form.value);

  console.log(typeof(signature.age)); // <=== HERE
  // output number

}

html

<form [formGroup]="form">
  <input formControlName="name" type="text"/>
  <input formControlName="age" type="number"/>
</form>

为什么值不是字符串?在模型中是用字符串定义的,虽然输入类型是数字,因为我想友好地显示它,但我需要一个字符串,而且我不想单独转换(在一个模型中输入了一堆 itens 的场景中思考) .

谢谢

堆栈闪电战示例

https://stackblitz.com/edit/angular-ivy-z1sygf

标签: angulartypescriptvalidation

解决方案


另一个答案是 100% 正确,您想要做的事情应该在其他地方的映射函数中完成,但您仍然可以使用仅允许数字的指令来完成。

使用链接中的指令,html 将如下所示:

<form *ngIf="form" [formGroup]="form">
  <input formControlName="name" type="text"/>
  <input formControlName="age" numbersOnly/>
</form>

我不是那个写指令的人,我仍然认为你应该找到另一种方法。


推荐阅读