Javascript 你能引用一个';它是在ngOnInit中创建的?

Javascript 你能引用一个';它是在ngOnInit中创建的?,javascript,angular,typescript,asynchronous,Javascript,Angular,Typescript,Asynchronous,我只是想知道是否有任何方式、形状或形式可以引用在ngOnInit()中创建的函数,或者可以创建某种闭包来引用它 基本上: component(){ somefunc() //be able to call the function that's created in ngOnInit from the component via //click event after the component renders ngOnInit() { function somefunc(){ ..

我只是想知道是否有任何方式、形状或形式可以引用在ngOnInit()中创建的函数,或者可以创建某种闭包来引用它

基本上:

component(){

somefunc()
//be able to call the function that's created in ngOnInit from the component via
//click event after the component renders

ngOnInit() {
    function somefunc(){ ...whatever }
  }
}

有没有办法做到这一点

您的伪语法有点混乱

您可以这样调用已创建的函数:

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

@Component({
  templateUrl: './product-list.component.html',
  styleUrls: ['./product-list.component.css']
})
export class ProductListComponent implements OnInit {
  showImage = false;

  constructor() {

  }

  ngOnInit(): void {
    this.toggleImage();
  }

  toggleImage(): void {
    this.showImage = !this.showImage;
  }

}
          <button class='btn btn-primary'
                  (click)='toggleImage()'>
            Show Image
          </button>
您也可以通过按钮上的单击事件调用它,如下所示:

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

@Component({
  templateUrl: './product-list.component.html',
  styleUrls: ['./product-list.component.css']
})
export class ProductListComponent implements OnInit {
  showImage = false;

  constructor() {

  }

  ngOnInit(): void {
    this.toggleImage();
  }

  toggleImage(): void {
    this.showImage = !this.showImage;
  }

}
          <button class='btn btn-primary'
                  (click)='toggleImage()'>
            Show Image
          </button>

显示图像

这就是您要问的吗?

可以通过将方法分配给
ngOnInit
中的类成员属性来完成。在下面的代码中,我将该方法定义为箭头函数,以确保
引用方法主体中组件的实例。请参见演示

export class AppComponent implements OnInit {

  public onButtonClick: (event: Event) => void; // Member property will refer to the method

  ngOnInit() {

    let data = "And this comes from the closure!"; // Can be used inside of onButtonClick

    // Assign the method to the member property
    this.onButtonClick = (event: Event): void => {
      console.log("The button was clicked!", data);
      ...
    };

  }
}
然后,该方法可以用作事件处理程序:

<button (click)="onButtonClick($event)">Click me!</button>
点击我!

不太可能,除非将函数移到ngOnInitRight之外。那么,在init上声明一个空变量并将其分配给函数怎么样?我试过了,但没有成功,但似乎应该成功。为什么要声明一个空变量来重新声明它为函数呢?只需将其定义为函数…您是在做咖喱还是需要动态函数创建的事情?回答得真棒!!我缺少的关键因素是使用箭头函数来正确绑定
this
。很酷。