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

问题描述

我正在将一个模块从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" />
 

我已经验证了primeng FilterMetaData 接口并且它具有如下属性

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

代码语法很好,我已经在primeng页面文档https://www.primefaces.org/primeng/showcase/#/table

上验证了相同

请帮助不确定为什么 ng serve 没有问题但构建失败。我的node版本是node v10.23.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) />
,

尝试替换这一行

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

与其他人

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

希望对你有用

,

Angular/PrimeNg:12+

这对我有用:

注意:您可以在此处查看 <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"> 的用法。

const puppeteer = require('puppeteer');     // First line
const browser = await puppeteer.launch();

const page = await browser.newPage();
await page.goto('https://www.zebrafell.de/starkwind_check.html');

const myElement = await page.evaluate(() => {
   return document.getElementById('Ammersee').outerHTML;
});

console.log(myElement);

await browser.close();

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