TypeError不是Angular组件内的函数

时间:2019-07-23 16:35:18

标签: typescript

我在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()代码,它提供自动完成功能,我可以跳转到定义等。

对于任何帮助或指针,我做错了我将不胜感激。

0 个答案:

没有答案