类型';{typecode:string;}[]';不可分配给类型';字符串[]';//Angular 9.1.15,打字脚本
我对角度没有好的认识,我正在学习。下面我附上了我的TS文件。我正在进行自动完成搜索/提前键入搜索,我面临这些错误 src/app/app.component.ts:66:14-错误TS2339:类型“{typecode:string;}”上不存在属性“toLowerCase”类型';{typecode:string;}[]';不可分配给类型';字符串[]';//Angular 9.1.15,打字脚本,angular,typescript,typeahead,Angular,Typescript,Typeahead,我对角度没有好的认识,我正在学习。下面我附上了我的TS文件。我正在进行自动完成搜索/提前键入搜索,我面临这些错误 src/app/app.component.ts:66:14-错误TS2339:类型“{typecode:string;}”上不存在属性“toLowerCase” option.toLowerCase().includes(filterValue) 根据类型定义,我猜您正在传递一个字符串,并希望根据它过滤对象数组。然后需要返回对象数组而不是字符串数组 你可以用它。
option.toLowerCase().includes(filterValue)
根据类型定义,我猜您正在传递一个
字符串
,并希望根据它过滤对象数组。然后需要返回对象数组而不是字符串数组
你可以用它。试试下面的方法
private\u过滤器(值:string):string[]{
常量filterValue=value.toLowerCase();
返回此参数。objectOptions
.map(objectOption=>objectOption.option)//产生['CytroPac','CytroBox','GoPakTM']
.filter(option=>option.toLowerCase().includes(filterValue))
.map(option=>({typecode:option}));//映射回对象数组
}
或者要使用\u filter
函数的现有实现,可以使用注释掉的选项
变量(字符串数组),而不是对象数组对象选项
更新:仅使用数组#过滤器
请参见下面@Random的注释,仅使用
数组#过滤器
,而不需要冗余的数组#映射
s.过滤器选项
与字符串数组一起工作,并为其提供一个类似于objectOptions
的数组,它不是字符串。这是包含字符串的对象。因此,您可能必须使用map
运算符将对象列表转换为字符串列表?选项.typecode.toLowerCase().includes(filterValue)您能详细说明一下吗?TBH我对地图一无所知。比如应该如何使用map
方法?为什么要映射两次?你可以简单地在filter方法中使用objectOption.option.toLowerCase().includes(filterValue)
。@Random:你说得对,我实际上误解了OP想要的是什么,但却产生了他们需要的结果。只能使用Array#filter
返回this.objectOptions.map(objectOption=>objectOption.typecode).filter(option=>option.toLowerCase().includes(filterValue))代码>我添加了这个,我得到了想要的输出。我应该按照你的建议换衣服吗?
return this.objectOptions.filter(option =>
option.toLowerCase().includes(filterValue)
);
option.toLowerCase().includes(filterValue)