ngOnInit之外的函数调用ngOnInit中的函数

时间:2017-09-03 06:23:38

标签: javascript angular

我希望有这样的东西:

ngOnInit(){
  ...
  function test() {
    ...
  }
}

function()
{
  test();
}

如果可能,那怎么办?

2 个答案:

答案 0 :(得分:2)

您在ngOnInit中定义的函数需要存储在类实例中的某个位置,以便再次调用它。这意味着您需要一个属性来存储它。

class Component {
  private fn: Function; // or a better type if you know it
}

现在,在ngOnInit内,为此变量分配一个函数。您可能希望使用this的箭头函数成为您(可能)期望的函数。

class Component {
  private fn: Function; // or a better type if you know it

  public ngOnInit(): void {
    this.fn = () => {} // create it here
  }
}

发生这种情况后,您可以随时随地调用fn函数。

this.fn()

但要小心,如果在OnInit钩子开始之前尝试执行上面的行,则会出现运行时错误。例如,如果您在fn挂钩中使用OnChanges(将在OnInit挂钩之前调用一次),则需要小心:

if (this.fn) {
  this.fn()
}

答案 1 :(得分:1)

我不确定你为什么要做那样的事情?但这就是它的工作原理:

在组件内部,声明一个变量

func : any;

然后在ngOnInit中,

 ngOnInit(){
  ...
  func = function test() {
   ...
  }
}

然后在同一个组件中使用另一个函数调用该函数,

function someOtherFunction()
{
  this.func();
}