首页 > 解决方案 > 不是一个函数Angular 2

问题描述

我刚刚开始使用 angular 2 和打字稿。当我从 .ts 文件导入类时,编译成功但抛出错误

不是函数 _co.upchange

使用时(click)

更新.ts

export class Update {
  name:string;
}

export class Changeable {
  upchange (value) {
    console.log(value);
  }
}

更新组件.ts

import { Component, OnInit } from '@angular/core';
import { Update } from './Update';
import { Changeable } from './Update';

@Component({
  selector: 'app-update',
  templateUrl: './update.component.html',
  styleUrls: ['./update.component.css']
})
export class UpdateComponent implements OnInit {

  update:Update = {
    name:'Bhavya',
  }

  constructor() { }

  ngOnInit() {
  }
}

标签: angular

解决方案


这段代码:

 update:Update={
 name:'Bhavya',
 }

正在使用 Update 类的SHAPE定义一个对象……但它不是该类的实例。

如果您打算在对象上调用方法,则需要创建对象的实例,如下所示:

update = new Update();

  ngOnInit() {
    this.update.name = 'Bhavya';
  }

但是正如其他人所说,您调用的方法在 Changeable 类中?

考虑按如下方式更改代码:

export class Update {
  name:string;

  constructor(name: string) {
    this.name = name;
  }

  upchange(value) {
    console.log(value);
  }
}

然后你可以简单地这样做:

update = new Update('Bhavya');

但是查看调用upchange函数的 HTML 会很有帮助。

更新

如上所示,将函数定义为类中的方法upchange。请注意,我们不必使用关键字function

调用函数如下:

this.update.upchange('somevalue');

使用实例变量而不是类名来调用它。如果要使用类名调用方法,请使用静态方法。但请注意,静态方法不应保留状态。

有关更多信息,请参见:https ://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#821-instance-and-static-members


推荐阅读