我正在尝试在Angular ts文件中使用flat()
。当我运行项目时,它给出一个错误:[question.determinativeTerms].flat
不是一个函数!
我安装了它:
npm install --save array.prototype.flat
function matchUserInputToDeterminativePhrases(
faqs: Question[],
searchPhrase: string
): Question[] {
return faqs.reduce((matches, question) => {
let foundMatch = false;
[question.determinativeTerms].flat().forEach(term => {
if (
!foundMatch &&
searchPhrase &&
searchPhrase
.toLowerCase()
.search(new RegExp(`\\b${term.toLowerCase()}`)) !== -1
) {
foundMatch = true;
matches.push(question);
}
});
return matches.reverse();
}, []);
}
答案 0 :(得分:0)
仅npm安装软件包是不够的,您需要导入并使用它。看documentation for array.prototype.flat,看来如果要将函数添加到数组原型上,则需要在应用程序中的某处执行以下操作:
import flat from 'array.prototype.flat';
flat.shim();
答案 1 :(得分:0)
从 angular 11 和 thx 到 typescript 3.9,您现在可以在 flat()
文件中通过以下配置直接使用 angular 内部的 tsconfig.json
方法。
"compilerOptions": {
"target": "es2018",
"module": "es2020",
"lib": ["es2020", "dom"],
}