You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular子组件@Input接收父组件传值,focus事件取不到值怎么解决

问题根因

  • 父组件的属性绑定写法错误:当你使用[value]="abc"的语法时,Angular会默认将双引号内的abc解析为父组件的实例变量。如果父组件中没有定义名为abc的属性并赋值,实际传入子组件的value就是undefined,因此focus事件触发时打印结果不符合预期。
  • 若项目未导入FormsModule,ngModel绑定会失效,也会导致值无法正常同步。

解决方案

根据你的使用场景选择对应修改方式即可:

场景1:传入固定静态字符串

直接去掉属性绑定的方括号,无需绑定语法即可直接传入字符串:

<!-- 父组件调用代码 -->
<app-ec-textbox value="abc"></app-ec-textbox>

场景2:需要保留方括号绑定语法

给字符串包裹单引号,告知Angular这是字符串字面量而非变量:

<!-- 父组件调用代码 -->
<app-ec-textbox [value]="'abc'"></app-ec-textbox>

场景3:abc是父组件定义的动态变量

确保父组件的TS文件中已经声明并初始化了该变量:

// 父组件TS代码
abc: string = 'abc';

原有调用写法[value]="abc"无需修改即可正常生效。

补充排查

如果修改传值写法后问题仍然存在,检查子组件所属的模块是否导入了FormsModule:

// 对应模块代码
import { FormsModule } from '@angular/forms';

@NgModule({
  imports: [
    // ...其他导入
    FormsModule
  ]
})

修改完成后点击输入框触发focus事件,控制台即可正常打印传入的abc值。


内容的提问来源于stack exchange,提问作者Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:24:05