Angular 11 中如何使用 @Input 和 @Output 传递数据

阅读时长 5 分钟读完

Angular 11 中如何使用 @Input 和 @Output 传递数据

Angular 是一款流行且强大的前端框架,由于其模块化、组件化的设计思想,使得数据传递成为其中非常重要的一环。在 Angular 中,使用 @Input 和 @Output 装饰器来实现组件之间的通信是非常常见的做法。本文将深入讲解 @Input 和 @Output 的使用方法,并示范代码来更好地帮助各位理解。

@Input 装饰器

@Input 装饰器用于在父组件中向子组件中传入数据,使得子组件可以使用父组件中的数据。下面是一个简单的示例代码:

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

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

在父组件中,我们声明了一个 parentData 变量,并将其传递给子组件 child-component,子组件中使用 @Input 装饰器声明了一个 myData 属性,与父组件内传递的 myData 属性绑定,从而实现传递数据。

此外,@Input 装饰器也可以实现双向数据绑定。例如:

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

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

在父组件中使用了双向数据绑定 [(myData)]="parentData",在子组件中使用 @Output 装饰器声明了一个 myDataChange 事件,当子组件中的输入框值发生改变时,触发 onInputChange 方法,更新 myData 属性值,并通过 myDataChange 事件将新的值返回到父组件,从而实现双向数据绑定。

@Output 装饰器

@Output 装饰器用于在子组件中向父组件中传递数据,使得父组件可以获取子组件中的数据。下面是一个示例代码:

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

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

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

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

在子组件中,我们使用 @Output 装饰器声明了一个 inputChange 事件,当子组件中的输入框值发生改变时,触发 onInputChange 方法,并通过 inputChange 事件将新的值发送到父组件。在父组件中,我们使用 (inputChange)="onInputChange($event)" 来监听子组件的 inputChange 事件,并在回调函数中获取子组件传过来的值,从而实现数据传递。

总结

本文讲解了在 Angular 11 中使用 @Input 和 @Output 装饰器传递数据的方法,以及能够使用双向数据绑定和事件绑定实现双向数据流的方法。我们需要在父组件中使用 @Input 装饰器声明一个属性,将其传递给子组件;在子组件中使用 @Input 装饰器声明一个与父组件中属性绑定的属性,从而接收传递来的数据。如果需要实现双向数据绑定,我们还需要使用 @Output 装饰器声明一个事件,并在子组件中触发该事件传递数据回父组件。通过这些方法,我们可以在 Angular 应用程序中实现组件间的数据通信,从而更好地开发出更为强大的应用程序。

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

纠错
反馈