我看到一个奇怪的错误,我尝试从另一个方法调用一个方法,并且这两个方法都在同一个 Angular 2 TypeScript 组件中。
在下面的代码中看到,当调用 ngOnInit() 时,它会启动 method1。 method1 尝试调用 this.method2() 。这就是问题所在。 出现的错误如下: 错误:无法读取未定义的属性“method2”
为什么 this 对象未定义?我怎样才能解决这个问题,以便我可以像使用 Java 这样的语言一样,从同一个类中的其他方法调用属于某个类的方法?
import {Component, OnInit} from '@angular/core';
@Component({
selector: 'my-dashboard',
moduleId: module.id,
templateUrl: './dashboard.component.html',
styleUrls: [ './dashboard.component.css' ]
})
export class DashboardComponent implements OnInit {
constructor() {
}
ngOnInit(): void {
this.method1();
};
method1(): void {
this.method2();
};
method2(]): void {
console.log("hi");
}
}
最佳答案
我在 Plunker 中复制了您的确切代码(但从 method2 的参数中删除了不寻常的“]”)并且它工作正常。我还添加了一个按钮,可以根据需要多次调用 Method1()。
我的建议是,从组件元数据中删除 moduleId: module.id
并重试。即使是 Plunker 放在那里也无法工作。
更新:
“所有提到的 moduleId 均已删除。“组件相对路径”说明书已删除 (2017-03-13)”- https://angular.io/docs/ts/latest/guide/change-log.html
app.ts:
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<button (click)="method1()">Invoke Method 1</button>
</div>
`,
})
export class App implements OnInit{
name:string;
constructor() {
this.name = `Angular! v${VERSION.full}`
}
ngOnInit(): void {
this.method1();
};
method1(): void {
this.method2();
};
method2(): void {
alert("hi");
}
}
关于javascript - 如何从同一 Angular (Typescript) 组件类中的另一种方法调用一种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44191484/