Angular 中子组件如何调用父组件的方法

阅读时长 7 分钟读完

随着前端技术的不断发展,前端框架也越来越多,Angular 作为一个主流的前端框架,被越来越多的开发者所使用。在 Angular 中,父组件与子组件之间的交互十分常见,而在子组件中调用父组件的方法也是一个非常重要的问题。

1. 父组件向子组件传递方法

在 Angular 中,父组件向子组件传递方法有三种方法:

1.1 @Input 属性装饰器

通过为子组件添加 @Input 属性装饰器,我们可以在父组件中通过属性绑定方式将方法传递给子组件。具体实现方法如下:

-- -------------------- ---- -------
------ - ---------- ----- - ---- ----------------

------------
  --------- ------------
  --------- -
    ------- ---------------------------------------------
  -
--
------ ----- -------------- -
  -------- ------------- ---------

  ------------------ -
    --------------------
  -
-

在父组件中,我们可以将方法赋值给 parentMethod 属性,并通过 [parentMethod] 的形式传递给子组件:

1.2 子组件输出事件

子组件可以通过 Output 属性装饰器定义一个事件,当事件被触发时,父组件可以通过监听该事件来调用子组件的方法。具体实现方法如下:

-- -------------------- ---- -------
------ - ---------- ------------- ------ - ---- ----------------

------------
  --------- ------------
  --------- -
    ------- ---------------------------------------------
  -
--
------ ----- -------------- -
  --------- ---------- - --- ------------------------

  ------------------ -
    ---------------------------
  -
-

在父组件中,我们可以通过监听 callParent 事件来调用子组件的方法:

1.3 通过 ViewChild 获取子组件实例

在父组件中,我们可以通过 @ViewChild 装饰器获取子组件实例,并直接调用子组件的方法。具体实现方法如下:

-- -------------------- ---- -------
------ - ---------- --------- - ---- ----------------
------ - -------------- - ---- --------------------

------------
  --------- -------------
  --------- -
    -----------------------
  -
--
------ ----- --------------- -
  -------------------------- ------ ---------------

  ----------------- -
    -----------------------------
  -
-

在子组件中,我们需要暴露一个公共方法,供父组件调用:

-- -------------------- ---- -------
------ - --------- - ---- ----------------

------------
  --------- ------------
  --------- -
    ------- --------------------------------------------
  -
--
------ ----- -------------- -
  ----------------- -
    ------------------------
  -
-

2. 在子组件中调用父组件的方法

在 Angular 中,子组件调用父组件的方法也有多种实现方式:

2.1 通过 @Output 事件回调

我们可以在子组件中定义一个事件,父组件可以通过输出属性与子组件绑定在一起,当子组件被触发时,可以通过回调函数调用父组件的方法。具体实现方法如下:

-- -------------------- ---- -------
------ - ---------- ------------- ------ - ---- ----------------

------------
  --------- ------------
  --------- -
    ------- -----------------------------------------
  -
--
------ ----- -------------- -
  --------- ---------- - --- ------------------------

  --------- -
    ---------------------------
  -
-

在父组件中,我们需要为子组件绑定 sendParent 事件,并在对应的方法中调用父组件的方法:

-- -------------------- ---- -------
------ - --------- - ---- ----------------

------------
  --------- -------------
  --------- -
    ---------- ----------------------------------------------
  -
--
------ ----- --------------- -
  ------------------ -
    ------------------------
  -
-

2.2 通过 ViewChild 获取父组件实例

在子组件中,我们可以通过 @ViewChild 装饰器获取父组件实例,并直接调用父组件的方法。具体实现方法如下:

-- -------------------- ---- -------
------ - ---------- --------- - ---- ----------------
------ - --------------- - ---- ---------------------

------------
  --------- ------------
  --------- -
    ------- --------------------------------------------------
  -
--
------ ----- -------------- -
  --------------------------- ------- ----------------

  ------------------ -
    -------------------------------
  -
-

在父组件中,我们需要暴露一个公共方法,供子组件调用:

-- -------------------- ---- -------
------ - --------- - ---- ----------------

------------
  --------- -------------
  --------- --
--
------ ----- --------------- -
  ------------------ -
    ------------------------
  -
-

3. 总结

通过本文的介绍,我们可以发现,在 Angular 中实现父子组件之间的方法调用是非常简单的。在父组件向子组件传递方法时,我们可以使用 @Input 属性装饰器、子组件输出事件以及通过 ViewChild 获取子组件实例这三种方式。而在子组件调用父组件的方法时,我们可以使用 @Output 事件回调以及通过 ViewChild 获取父组件实例这两种方式。相信在实际开发中,这些技巧会给我们带来很大的帮助和优势。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645826c0968c7c53b0a982df

纠错
反馈