Angular 启动自动完成在清除时发送空字符串
我有一个p-autocomplete元素(primeng7.0.5),用于控制自定义对象字段(类型OrganizationView) 以下是标记:Angular 启动自动完成在清除时发送空字符串,angular,autocomplete,primeng,Angular,Autocomplete,Primeng,我有一个p-autocomplete元素(primeng7.0.5),用于控制自定义对象字段(类型OrganizationView) 以下是标记: <p-autoComplete [(ngModel)]="state.organization" (completeMethod)="onSearchOrganisation($event)" (onClear)="state.organization = null" (onSelect)="onOrganiza
<p-autoComplete
[(ngModel)]="state.organization"
(completeMethod)="onSearchOrganisation($event)"
(onClear)="state.organization = null"
(onSelect)="onOrganizationSelected($event)"
[emptyMessage]="'GLOBALS.NORESULT' | translate"
[forceSelection]="true"
[suggestions]="availableOrganizations"
[dropdown]="true"
field="name"
placeholder="{{'PLACEHOLDERS.ORGANISATION' | translate}}">
当从“自动完成”菜单中选择值时,我总是按预期获得OrganizationView对象。清除字段时出现问题:
清除时(用鼠标选择全部并按backspace),我的setter会被触发2次:一次为null,另一次为空字符串。以下是console.log输出:
> object null
> string
字符串的插入让我很担心,因为它会弄乱我试图设置的整个强类型系统。我可以为空字符串编写显式检查,但我想知道是否有更干净的解决方案,或者我是否出错。我也有同样的问题。解决方法是删除数据绑定,只使用onClear和onComplete事件设置/清除字段
<p-autoComplete
<!-- [(ngModel)]="state.organization" remove this binding-->
(completeMethod)="onSearchOrganisation($event)"
(onClear)="state.organization = null"
(onSelect)="onOrganizationSelected($event)"
[emptyMessage]="'GLOBALS.NORESULT' | translate"
[forceSelection]="true"
[suggestions]="availableOrganizations"
[dropdown]="true"
field="name"
placeholder="{{'PLACEHOLDERS.ORGANISATION' | translate}}">
如果您不在.ts文件中执行任何额外操作,我也遇到了同样的问题,请使用此解决方法:
set organization(newOrganization: OrganizationView) {
this._organization = newOrganization ? newOrganization : <OrganizationView>{};
console.log(typeof newOrganization, newOrganization);
}
设置组织(新建组织:组织视图){
这个._organization=newOrganization?newOrganization:{};
console.log(newOrganization的类型,newOrganization);
}
你好,我很好奇你是怎么处理这件事的?我现在遇到了类似的问题,希望值为null,但它是一个空字符串Hello Tommo。不幸的是,我不得不放弃任何清洁的解决方案。我显式地检查了空字符串(通过===运算符),并在继续之前将其转换为null。也许他们已经修复了这个错误。我不再做那个项目了。对不起,我想提供一些更好的解决方案。。。
(onSelect)="state.organization = $event"
set organization(newOrganization: OrganizationView) {
this._organization = newOrganization ? newOrganization : <OrganizationView>{};
console.log(typeof newOrganization, newOrganization);
}