3

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

 error TS2339: Property 'value' does not exist on type 'FilterMetadata | FilterMetadata[]'.
  Property 'value' does not exist on type 'FilterMetadata'.

错误是针对以下代码

<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" />
 

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

export interface FilterMetadata {
    value?: any;
    matchMode?: string;
    operator?: string;
}

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

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

4

3 回答 3

4

角度/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">

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

于 2021-07-01T20:24:30.050 回答
0

尝试替换此行

[value]="dt.filters[col.field]?.value

与这个其他

[value]="$any(dt).filters[col.field]?.value"

我希望这个对你有用

于 2021-04-17T05:13:27.707 回答
0

您的语法中有错字。我希望您使用的是全局搜索功能,语法应该是(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) />
于 2021-01-30T00:17:34.750 回答