javascript - 如何从同一 Angular (Typescript) 组件类中的另一种方法调用一种方法?

标签 javascript angular

我看到一个奇怪的错误,我尝试从另一个方法调用一个方法,并且这两个方法都在同一个 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/

相关文章:

javascript - 在运行时创建一个 <div>

javascript - 如何获取等于 10 的输入并执行在屏幕上显示“awesome”的功能

angular - 运行 ng serve 时出现 ng-translate 错误

angular - 如何使用 Jasmine 为私有(private)方法编写 Angular/TypeScript 的单元测试

javascript - 向打印机发送一个包含 HTML 代码的 javascript 变量

javascript - jQuery 选择-选择防止隐藏选择

javascript - 具有多个图像模态的页面在第一个模态之后不加载图像

javascript - 使用 Angular Router 获取 URL

javascript - Angular 7 使用 *ngfor 分组数据

node.js - Npm 测试找不到 socket.io.js 文件