Angular 中如何使用 @Input 和 @Output 定义输入输出属性 - 教程

在 Angular 中,组件是重要的构建模块。它们可以是简单的控件,也可以是更复杂的部件和应用程序的页面。在创建组件时,我们需要考虑如何与其他组件通信,例如:如何从一个组件向另一个组件传递数据,如何在这些组件之间触发事件。

Angular 为组件之间的通信提供了两种主要的方法:输入属性和输出属性。在本篇文章中,我们将介绍如何使用 @Input@Output 定义输入输出属性。

@Input 输入属性

@Input 是一个装饰器,它用于定义一个输入属性。通过 @Input,我们可以将某些数据从一个组件传递到另一个组件。@Input 是一种单向绑定,也就是说,从父组件向子组件传递数据时,父组件的数据会影响子组件的数据,但子组件的数据不会影响父组件的数据。

使用 @Input 的示例代码如下:

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

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

在上面的示例中,我们定义了一个名为 childMessage 的输入属性,它的类型是字符串类型。在子组件中,我们使用双花括号语法来绑定这个输入属性,这样就可以在子组件中展示从父组件传递来的数据。

在父组件中,我们可以使用以下方式将数据传递给子组件:

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

在上面的示例中,我们使用方括号语法将 childMessage 属性绑定到父组件中的 message 变量。

@Output 输出属性

@Output 也是一个装饰器,它用于定义一个输出属性。通过 @Output,我们可以发送事件,即当某些事情发生时,通知其他组件。与 @Input 不同,@Output 是一种事件的形式,也就是说,当从子组件向父组件发送数据时,父组件的数据会受到影响,但子组件的数据不会受到影响。

使用 @Output 的示例代码如下:

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

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

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

在上面的示例中,我们定义了一个名为 messageEvent 的输出属性,它的类型是 EventEmitter,这个类型允许我们在子组件中发送事件。sendMessage 方法用于发送消息,通过 messageEvent.emit() 方法将要发送的消息传递给父组件。

在父组件中,我们可以使用以下方式监听 messageEvent 事件:

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

在上面的示例中,我们使用圆括号语法来监听 messageEvent 事件,并将事件绑定到 receiveMessage() 方法。当 messageEvent 事件发生时,receiveMessage() 方法会被触发,此时父组件中的 message 变量会更新。

总结

在本篇文章中,我们介绍了如何使用 @Input@Output 定义输入输出属性。@Input 允许我们将数据从父组件传递到子组件,而 @Output 则允许我们从子组件向父组件发送事件。这两种属性可以让我们更方便地在组件之间进行通信和数据交换。

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