Angular 中如何使用 @Input 和 @Output 进行父组件和子组件之间通讯 - 教程

Angular 是一个流行的前端框架,它提供了很多功能用于构建单页应用程序(SPA)。在 Angular 应用程序中,组件是核心构建块,组件之间的通讯是非常重要的。在 Angular 中,有两个重要的装饰器,@Input 和 @Output,用于在父组件和子组件之间进行通讯。本文将详细介绍这两个装饰器的使用方法,并提供示例代码以供参考。

@Input 装饰器

@Input 装饰器用于将数据从父组件传递给子组件。在子组件中,@Input 装饰器标注的属性将变成一个带有输入属性的绑定点。父组件可以通过这个绑定点向子组件传递数据。

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

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

在子组件中,我们定义了两个属性 name 和 age,并用 @Input 装饰器标记。这样一来,父组件就可以将数据通过这些属性传递给子组件:

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

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

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

在父组件中,我们定义了两个变量 name 和 age,并在模板中用 [(ngModel)] 指令绑定到两个输入框上。父组件还有一个 sendData 函数,用于向子组件传递数据。按钮的点击事件会调用这个函数,但我们还没有在该函数中实现传递数据的逻辑。最后,在父组件的模板中,我们使用子组件的标签,并将 name 和 age 作为输入属性传递给子组件。

@Output 装饰器

@Output 装饰器用于从子组件向父组件传递事件。在子组件中,我们定义一个 EventEmitter,并用 @Output 装饰器标记。父组件可以监听这个 EventEmitter,并在事件发生时执行相应的代码。下面是一个示例:

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

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

在子组件中,我们定义了一个名为 notifyParent 的事件,并用 @Output 装饰器标记,事件类型为 EventEmitter。在子组件的模板中,我们在一个按钮的点击事件中触发这个事件。

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

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

在父组件中,我们使用子组件的标签,并在其中绑定 notifyParent 事件。此时,当子组件中的按钮被点击时,notifyParent 事件将被触发。在父组件中,我们定义了一个 handleNotification 函数,当事件发生时,这个函数将被调用。

总结

@Input 和 @Output 装饰器是 Angular 中用于在父组件和子组件之间通讯的重要机制。通过 @Input 装饰器,父组件可以向子组件传递数据。通过 @Output 装饰器,子组件可以向父组件传递事件。本文介绍了这两个装饰器的使用方法,并提供了示例代码。我们希望这篇文章对你在学习 Angular 中的组件通讯有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/664ffe30d3423812e41e1158