nz-select 数据回显失败,大模型救了我一命。

前言

最近老苦逼了。原本计划推进的《软件开发人员从0到1实现物联网项目》项目因为种种原因停滞了将近一个月,进展缓慢。其中一个原因就和本文有关。

继《时隔5年重拾前端开发,却倒在了环境搭建上》之后,就一直在赶这个项目的进度。这次又又又又又是前端问题,再次分享给和我一样不懂Angular框架的程序员们。

问题现象

先说一下这个问题的现象:nz-select没有回填数据。

option下拉框中是有可选项的,只不过设置的数据没有显示出来。

代码是这样的:

<nz-form-item>
  <nz-form-label nzRequired>字段1</nz-form-label>
  <nz-form-control>
    <nz-select  formControlName="namexxx" >
              <nz-option *ngFor="let data of xxx" nzValue="{{data.id}}" nzLabel="{{data.name}}"></nz-option>
    </nz-select>
  </nz-form-control>
</nz-form-item>
this.validateForm.setValue({
  namexxx: this.namexxx,
});

老铁们能看出哪里有问题不?

无奖竞答…

问题解决经过

数据类型的问题?

说实话,这个问题的产生是我万万没有想到的。因为在此之前是可以正常回填的,直到我改了nzValue的属性,原本是nzValue="{{data.key}}"

data.key和data.id两个数据类型不一样,前者为String,后者为int,奥,应该是Number。

所以,在出现问题后,我的第一想法就是:难道跟数据类型有关系?

随后在变量定义处指定了数据类型。结果依然是:没有回显数据。

经过后续的多次反复尝试与折腾,我愈发坚定地认为:一定是数据类型的原因。

但是,折腾了半天,依然没有解决。

求助大模型

那怎么办?根据我多年的开发经验,只能求助大模型了。

我将代码发给大模型后,给我的回答如下

您的 nz-option 中使用了插值表达式 {{data.id}} 和 {{data.name}},这在 Angular中通常是用于模板中显示动态数据的方式。但在 nz-option 的 nzValue 和 nzLabel 属性中,您应该直接绑定属性而不是使用插值表达式。正确的做法应该是使用属性绑定,如下所示:

<nz-option *ngFor="let data of xxx" [nzValue]="data.id" [nzLabel]="data.name"></nz-option>

请注意,我去掉了插值表达式 {{}},并使用了方括号 [] 来表示属性绑定。

原来{{}}叫插值表达式,我一直以为就是数据双向绑定的写法。还有,属性绑定是什么鬼???

问题解决

参考了大模型的回答,我对代码进行了相应的调整,然后,成功了…

小小的疑问

由于时间关系,鄙人没有深入了解插值表达式和属性绑定的区别。哪位大佬可以言简意赅为小弟解惑一下。

还有,为什么字符串类型的value就可以成功回显呢?真的不是数据类型的问题吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王二蛋!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值