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

PrimeNG(16.9.15-lts) Autocomplete Bug:选中对象为何变为字符串?

p-autoComplete组件类型异常问题

我在开发Angular项目时使用p-autoComplete组件实现电影选择功能,组件整体运行正常,但遇到一个异常场景:

  • 首次输入完整电影标题并点击输入框外部完成选择时,selectedMovie能正确设置为完整的Movie对象,符合预期。
  • 但若再次聚焦输入框,删除任意字符后重新输入该字符,再点击输入框外部,selectedMovie会被设置为电影标题字符串,而非预期的Movie对象。

已为组件设置[forceSelection]="true",确保只能选择有效的电影对象,同时检查了onBlur()方法并打印selectedMovie值,期望它始终保持为完整的Movie对象,但问题仍存在。

临时解决方法

在onBlur()方法中增加类型检查,判断selectedMovie是否为字符串。如果是,则通过电影标题在movies数组中匹配对应的Movie对象,重新赋值给selectedMovie:

onBlur(event: Event): void {
  if (typeof this.selectedMovie === 'string') {
    // 在电影数组中匹配对应对象并重新赋值
    console.log('selectedMovie 为字符串类型: ', this.selectedMovie);
    const movieTitle: string = this.selectedMovie;
    this.selectedMovie = this.movies.find(movie => movie.title === movieTitle);
    console.log('更新后的 selectedMovie: ', this.selectedMovie);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:02:36