我刚刚开始使用角形2和打字记录。当我从.ts文件导入类时,编译成功,但抛出一个错误
不是函数_co.upchange
当使用(click)时。
Update.ts
export class Update {
name:string;
}
export class Changeable {
upchange (value) {
console.log(value);
}
}update.component.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() {
}
}发布于 2019-01-24 18:41:11
此代码:
update:Update={
name:'Bhavya',
}是用Update类的SHAPE定义一个对象.但它不是类的一个实例。
如果计划调用对象上的方法,则需要创建对象的实例,如下所示:
update = new Update();
ngOnInit() {
this.update.name = 'Bhavya';
}但是,正如其他人所说,您正在调用的方法是在可变类中吗?
考虑按以下方式修改代码:
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
https://stackoverflow.com/questions/54353319
复制相似问题