首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ngOnInit外部的函数调用ngOnInit内部的函数

ngOnInit外部的函数调用ngOnInit内部的函数
EN

Stack Overflow用户
提问于 2017-09-03 14:23:38
回答 2查看 5.9K关注 0票数 2

我想要这样的东西:

代码语言:javascript
复制
ngOnInit(){
  ...
  function test() {
    ...
  }
}

function()
{
  test();
}

如果这是可能的,那么如何实现呢?

EN

回答 2

Stack Overflow用户

发布于 2017-09-03 16:40:57

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

代码语言:javascript
复制
class Component {
  private fn: Function; // or a better type if you know it
}

现在,在ngOnInit中,给这个变量赋值一个函数。您可能希望使用箭头函数使this成为您(可能)期望的样子。

代码语言:javascript
复制
class Component {
  private fn: Function; // or a better type if you know it

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

在这种情况发生后,您可以像往常一样从任何地方调用fn函数。

代码语言:javascript
复制
this.fn()

但是要小心,如果您试图在OnInit钩子生效之前执行上面的代码行,您将得到一个运行时错误。例如,如果您在OnChanges钩子中使用fn (将在OnInit钩子之前调用一次),则需要小心:

代码语言:javascript
复制
if (this.fn) {
  this.fn()
}
票数 2
EN

Stack Overflow用户

发布于 2017-09-03 15:03:07

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

在组件中,声明一个变量

代码语言:javascript
复制
func : any;

然后在ngOnInit内部,

代码语言:javascript
复制
 ngOnInit(){
  ...
  func = function test() {
   ...
  }
}

然后在同一组件中调用另一个函数内的函数,

代码语言:javascript
复制
function someOtherFunction()
{
  this.func();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46020858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档