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
相关产品推荐
相关产品推荐

