• 技术文章 >web前端 >js教程

    一文详解Angular父子组件间传数据的方法

    青灯夜游青灯夜游2023-01-04 21:06:51转载88
    本篇文章带大家了解一下Angular父子组件(Component)之间传递数据的方法,介绍一下Angular中父组件向子组件传数据、子组件向父组件传数据的方法,希望对大家有所帮助!

    环境:
    Angular CLI: 11.0.6
    Angular: 11.0.7
    Node: 12.18.3
    npm : 6.14.6
    IDE: Visual Studio Code

    组件之间传递数据,最主要的就是父子组件之间传递数据, 例如:

    <parent-component>
      <child-component></child-component>
    </parent-component>

    父组件传入数据给子组件,同时,子组件数据发生变化是,希望能够通知父组件。

    Angular 中,@Input() 和 @Output() 为子组件提供了一种与其父组件通信的方法。 @Input() 允许父组件更新子组件中的数据。相反,@Output() 允许子组件向父组件发送数据。

    父传子 @Input()

    1. 子组件定义@Input()

    子组件中的 @Input() 装饰器表示该属性可以从其父组件中获取值。【相关教程推荐:angular教程编程教学

    例如:

    export class ChildComponent {
      @Input() message: string;
    }
    <p>
      Parent says: {{message}}
    </p>

    2. 父组件传递变量给子组件

    当父组件调用子组件时,可以把父组件的变量(如messageToChild) 传递给子组件

    <child-component [message]="messageToChild"></child-component>

    子组件中,可以更改message这个传入的变量,但是其作用域只在子组件中,父组件拿不到更改后的结果。(如何传给父组件,请接着看)

    子传父 @Output()

    Angular通过事件(Event)来实现子组件通知父组件数据的改变,父组件需要订阅该事件。

    1. 子组件定义@Output

    子组件定义@Output

    export class ChildComponent {
    
      // EventEmitter ,这意味着它是一个事件
      // new EventEmitter<string>() - 
      // 使用 Angular 来创建一个新的事件发射器,它发出的数据是 string 类型的。
      @Output() newItemEvent = new EventEmitter<string>();
    
      addNewItem(value: string) {
        this.newItemEvent.emit(value);
      }
    }

    子组件当数据发生变化时,调用这个addNewItem方法既可。例如,html中

    <label>Add an item: <input #newItem></label>
    <button (click)="addNewItem(newItem.value)">Add to parent's list</button>

    2. 父组件订阅事件

    1、父组件的ts代码中,增加一个处理上面事件的方法,例如

    addItem(newItem: string) {
        // logic here
    }

    2、父组件的html中,订阅该事件。

    <child-component (newItemEvent)="addItem($event)"></child-component>

    事件绑定 (newItemEvent)='addItem($event)' 会把子组件中的 newItemEvent 事件连接到父组件的 addItem() 方法。

    总结

    更多编程相关知识,请访问:编程视频!!

    以上就是一文详解Angular父子组件间传数据的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:javascript Angular
    上一篇:浅析nodejs中怎么使用JWT? 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Angular开发问题记录:组件数据不能实时更新到视图上• Angular开发问题记录:组件拿不到@Input输入属性• Angular学习之聊聊Http ( 错误处理 / 请求拦截 )• 浅析Angular中怎么结合使用FormArray和模态框• Angular13+ 开发模式太慢怎么办?原因与解决方法介绍
    1/1

    PHP中文网