primeng 表上的“FilterMetadata”类型上不存在属性“value”

Lak*_*hmi 7 typescript primeng angular primeng-datatable angular11

我正在将一个模块从 primeng 7 迁移到 primeng11 以及 angular11 代码在 ng 服务上运行得很好,功能也正常工作,但在构建时我遇到了一个奇怪的错误

 error TS2339: Property 'value' does not exist on type 'FilterMetadata | FilterMetadata[]'.
  Property 'value' does not exist on type 'FilterMetadata'.
Run Code Online (Sandbox Code Playgroud)

错误是针对以下代码的

<input *ngIf='!col.noFilter' [style.width]="'98%'" [style.height]="'25px'" pInputText type="text"
                        [placeholder]="col.filterPlaceHolder ? col.filterPlaceHolder : ''" 
                        (input)="dt.filter($event.target.value, col.field, col.filterMatchMode)" 
                        [value]="dt.filters[col.field]?.value" />
 
Run Code Online (Sandbox Code Playgroud)

我已经验证了 primengFilterMetaData接口,它的属性值如下

export interface FilterMetadata {
    value?: any;
    matchMode?: string;
    operator?: string;
}
Run Code Online (Sandbox Code Playgroud)

代码语法很好,我已经在 primeng 页面文档上验证了相同的语法https://www.primefaces.org/primeng/showcase/#/table

请帮助不确定为什么 ng 服务没有问题但构建失败。我的节点版本是节点v10.23.0

Sam*_*ath 11

Angular/PrimeNg:12+

这对我有用:

注意:您可以$any在此处查看用法。

 <input pInputText type="text" (input)="dt.filter($any($event.target)?.value, 'name', 'contains')"
 [value]="$any(dt.filters['name'])?.value" placeholder="Search by Name" class="p-column-filter">
Run Code Online (Sandbox Code Playgroud)

参考: https://github.com/angular/angular/issues/35293#issuecomment-584293328


Zam*_*hid -1

您的语法中有一个拼写错误。我希望您使用全局搜索功能,并且语法应该是(input)="dt.filterGlobal()"而不是 (input)="dt.filter()"

<input *ngIf='!col.noFilter' [style.width]="'98%'" [style.height]="'25px'" pInputText type="text" [placeholder]="col.filterPlaceHolder ? col.filterPlaceHolder : ''" (input)="dt.filterGlobal($event.target.value, col.field, col.filterMatchMode) />
Run Code Online (Sandbox Code Playgroud)