<select> <option>的值作为字符串而不是Long返回

时间:2018-06-24 21:10:48

标签: html5 typescript angular5

在添加带有电子邮件及其关联公司ID的联系人时,我遇到以下错误: 2018-06-24 23:03:04.743 WARN 11360 --- [nio-8080-exec-8] .wsmsDefaultHandlerExceptionResolver:无法读取HTTP消息:org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:无法构造org.vi.entities.Company的实例(尽管至少存在一个Creator):没有用于从字符串值('4')反序列化的字符串参数构造函数/工厂方法;嵌套异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造org.vi.entities.Company的实例(尽管存在至少一个Creator):没有用于从字符串值反序列化的String-argument构造函数/工厂方法(“ 4”)      在[来源:(PushbackInputStream);行:1,列:138](通过参考链:org.vi.entities.Contact [“ company”]) 我认为option的值发送的是String而不是Long,我该如何解决这个问题?
      
                 
<输入类型=“ email” class =“ form-control” id =“ email” name =“ email” placeholder =“ Email” [(ngModel)] =“联系人。电子邮件“>
      
      
                 
                   
      
               
model.contact.ts 从“ ./model.company”导入{Company}; 出口舱联系人{   电子邮件:字符串;   电话:字符串;   firstName:string;   lastName:string;   工作:字符串;   生日:日期;   公司:公司 } model.company.ts 出口舱公司{   身份证号码;   名称:字符串;   活动:字符串;   地址:字符串;   城市:字符串;   logo:字符串; }

2 个答案:

答案 0 :(得分:1)

option的属性value始终是字符串。尝试改用[ngValue]

<option *ngFor="let comp of companies" [ngValue]="comp.id">{{comp.name}}</option>

option元素被angular的{​​{3}}覆盖,该元素具有ngValue输入。 ngValue可以是任何类型:布尔值,对象,整数,字符串等...

答案 1 :(得分:0)

首先感谢您@Andriy的回应,Contact期望整个Company对象,所以解决方案是:[ngValue]="comp"

<div class="form-group row">
        <label for="company" class="col-md-2 col-form-label">Company</label>
        <div class="col-md-10">
          <select class="form-control" id="company" name="company" [(ngModel)]="contact.company">
            <option *ngFor="let comp of companies" [ngValue]="comp" >{{comp.name}}</option>
          </select>
        </div>
      </div>