我在TypeScript + Angular 8应用程序中遇到了一个非常奇怪的错误。尝试使用来自组件的类的方法时,在浏览器开发工具控制台中,我看到了ERROR TypeError: value.isActive is not a function
。
首先,我有模型类:
export class PhoneError {
constructor(public from: string, public to: string, public code: string) {}
public isActive(): boolean {
return true;
}
}
和
import { PhoneError } from 'app/shared/home/errors/phone-error.model';
export class TowerErrors {
constructor(public phoneErrors: PhoneError[]) {}
}
我还有一个组件:
import { Component, OnInit, OnDestroy } from '@angular/core';
import { TowerErrors } from 'app/shared/home/errors/tower-errors.model';
import { PhoneError } from 'app/shared/home/errors/phone-error.model';
@Component({
...
})
export class PhoneDetailsComponent implements OnInit, OnDestroy {
towerErrors: TowerErrors;
constructor(
...
) {}
ngOnInit(): void {
... // towerErrors are filled here
}
ngOnDestroy(): void {
...
}
private numberOfActiveErrors(): number {
return this.towerErrors.phoneErrors.filter(
(value: PhoneError, index: number, array: PhoneError[]) => {
value.isActive();
}
).length;
}
}
最后,我尝试从组件的模板调用numberOfActiveErrors
函数:
<span>{{ numberOfActiveErrors() }}</span>
但是不幸的是,此刻,我在浏览器开发工具控制台中看到了可怕的ERROR TypeError: value.isActive is not a function
,调试器正好指向filter
回调中的函数调用。
奇怪的是,IntelliJ IDEA正常看到value.isActive()
代码,它提供自动完成功能,我可以跳转到定义等。
对于任何帮助或指针,我做错了我将不胜感激。