Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 启动自动完成在清除时发送空字符串_Angular_Autocomplete_Primeng - Fatal编程技术网

Angular 启动自动完成在清除时发送空字符串

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元素(primeng7.0.5),用于控制自定义对象字段(类型OrganizationView)

以下是标记:

<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);
  }