Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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
类型';{typecode:string;}[]';不可分配给类型';字符串[]';//Angular 9.1.15,打字脚本_Angular_Typescript_Typeahead - Fatal编程技术网

类型';{typecode:string;}[]';不可分配给类型';字符串[]';//Angular 9.1.15,打字脚本

类型';{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) 根据类型定义,我猜您正在传递一个字符串,并希望根据它过滤对象数组。然后需要返回对象数组而不是字符串数组 你可以用它。

我对角度没有好的认识,我正在学习。下面我附上了我的TS文件。我正在进行自动完成搜索/提前键入搜索,我面临这些错误

src/app/app.component.ts:66:14-错误TS2339:类型“{typecode:string;}”上不存在属性“toLowerCase”

 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)