我指的是以下 primeng p 表示例:
url:https://primeng.org/table#Edit(单击右上角的 stackblitz 图标,如下图以蓝色突出显示)
如您所见,我是否将价格更新为无效值然后单击复选标记,
显示 toast 错误消息,但仍然更新记录!
如何防止这种情况发生?
非常感谢。
这是打字稿没有进行运行时类型检查的结果。价格的 ngModel 绑定到product.price。例如,当用户在 price 字段中输入字符串时,ngModel 会更新,即使 string 类型与 number 类型不兼容。 Typescript 并不关心,因为它不会在运行时检查类型。在 onRowEditSave() 方法中,程序检查 Product.price 是否大于零。当product.price 是字符串时,情况并非如此。因此,该语句的计算结果为 false,并且程序会抛出错误“无效价格”。
要解决此问题,您可以使用 p-inputNumber 而不是使用带有 pInputText 指令的常规输入。 inputNumber 组件不允许用户输入普通文本,只能输入数字。