繁体   English   中英

如何在相同的Angular(Typescript)组件类中从另一个方法调用一个方法?

[英]How to call one method from another method in same Angular (Typescript) Component Class?

我看到一个奇怪的错误,我尝试从另一个方法调用一个方法,并且两个方法都在同一个Angular 2 TypeScript组件中。

在下面的代码中看到,当调用ngOnInit()时,它将启动method1。 method1尝试调用this.method2()。 这就是问题所在。 出现的错误如下:错误:无法读取未定义的属性“ method2”

为什么此对象未定义? 我该如何解决这个问题,以便我可以像使用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年3月13日)” - https://angular.io/docs/ts/latest/guide/change-log.html

应用程式:

@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");
  }

}

这是不可运行的,因此我无法自己测试此解决方案,而是尝试将函数重命名为“ this.method2”,而不仅仅是“ method2”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM