Angular父子组件间怎么进行通信?父子传值的方式浅析

angular父子组件间怎么进行通信?本篇文章给大家介绍一下angular父子组件传值方式。

Angular父子组件间怎么进行通信?父子传值的方式浅析

通过Input和Ouput传值

父组件:html和ts


登录后复制

public name: string = "jack";public changeName(value: string) {    this.name = value;}

登录后复制

子组件:html和ts

{{name}}

登录后复制

import { Component, Input, EventEmitter, Output } from '@angular/core';@Input() name: string;@Output() changeName: EventEmitter = new EventEmitter();public emit() {    this.changeName.emit("修改name属性");}

登录后复制

【相关教程推荐:《angular教程》】

通过setter监听属性的变化

父组件同上,子组件:

private _name: string = "";@Input() public get name(): string {    return this._name;}public set name(value: string) {    this._name = value + "定义结构";}

登录后复制

通过ngOnChanges钩子函数监听输入属性的变化

ngOnChanges在监听多个属性的时候,要比setter的方式简便一些。

@Input() name: string;ngOnChanges(changes: SimpleChanges): void {    (({name}) => {        console.log(name.currentValue,name.previousValue);    })(changes);}

登录后复制

父组件html中通过模板变量调用子组件的方法和属性。

模板变量获取了子组件的一个引用。父组件:

登录后复制

子组件:

public childFn() {    console.log("通过模板变量调用子组件中的方法");}

登录后复制

父组件通过ViewChild获取子组件实例

登录后复制

@ViewChild("child") child: LiftcycleComponent;public childFn(): void {    this.child.childFn();}

登录后复制

通过service进行通信

service:

import { Subject } from 'rxjs';import { Injectable } from '@angular/core';@Injectable({    providedIn: 'root'})export class CommunService {    constructor() {}    public commun = new Subject();    communSend() {        this.commun.next("send");    }}

登录后复制

父组件:

constructor(private commun: CommunService) { }public send(): void {    this.commun.communSend();}

登录后复制

子组件:

constructor(private commun: CommunService) {     this.commun.commun.subscribe((value) => {console.log(value)});}

登录后复制

父组件传递方法

父组件通过属性传递给子组件方法,子组件进行调用,一般不推荐,React采用这种通信方式。可能是基于this的绑定错综复杂,所以angular不太推荐。React Hooks的出现也有一部分原因是class类的this错综复杂。父组件:


登录后复制

public name: string = "jack";public send(): void {    console.log(this.name);}

登录后复制

子组件:

登录后复制

@Input() send: Function;public childSend() {    this.send();}

登录后复制

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

以上就是Angular父子组件间怎么进行通信?父子传值的方式浅析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2709093.html

(0)
上一篇 2025年3月7日 20:28:49
下一篇 2025年2月27日 16:43:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 带你详细了解Angular中的变更检测

    本篇文章带你详细了解一下Angular中的变更检测,给大家介绍一下Angular 的 DOM 更新机制、变更检测能解决什么问题等。 通过这篇的文章,可以帮助你收获这些知识: Angular 的 DOM 更新是如何做到的?【相关教程推荐:《a…

    2025年3月7日 编程技术
    200
  • Angular怎么构建组件?3种方法介绍

    angular怎么构建组件?本篇文章给大家介绍一下angular创建项目的方法,angular创建组件的三种方式。 一、angular 与angularjs的区别是什么? 命名变化,Angular2 以后官方命名为Angular, 2.0 …

    2025年3月7日 编程技术
    200
  • 浅谈Angular组件之间通信的5种方法

    angular组件间怎么通信?下面本篇文章给大家介绍一下angular组件之间通信的5种方法,有需要的可以参考~ 组件是angular的构建单元,在项目中为了保证组件之间的数据能够来回的传递,angular封装了一些能够实现组件之间通信的方…

    2025年3月7日
    200
  • 手把手教你使用Angular CDK Portal创建动态内容

    之前介绍过原生 API 的动态视图插入,功能上已经可以满足大多数使用场景。不过也有一些缺憾,还没有解决在 Angular 应用外插入内容的需求,指令也不能跟动态插入的组件有输入输出的交互。 好在 Angular 官方提供了一套组件开发套件 …

    2025年3月7日
    200
  • 浅谈Angular中如何使用路由?

    angular中如何使用路由?本篇文章就来带大家了解一下angular中使用路由的方法,快速入门angular路由,希望对大家有所帮助! 路由的概念在前端的框架中得到了广泛的应用,对于路由的感念不做阐述,路由的应用无外乎就是嵌套、传参,高级…

    2025年3月7日
    200
  • 聊聊Angular中的自定义管道

    angular中管道有什么用?特点是什么?怎么自定义管道?下面本篇文章带大家了解一下angular中的管道,介绍一下自定义管道的方法,希望对大家有所帮助! 一、管道的作用 方便我们在模板中对我们的数据进行格式化处理。【相关教程推荐:《ang…

    2025年3月7日
    200
  • 深入了解Angular中的路由

    什么是路由?本篇文章带大家深入了解一下angular中的路由,希望对大家有所帮助! 路由简介 路由是实现单页面应用的一种方式,通过监听hash或者history的变化,渲染不同的组件,起到局部更新的作用,避免每次URL变化都向服务器请求数据…

    2025年3月7日
    200
  • 深入浅析Angular中的依赖注入

    什么是依赖注入?本篇文章带大家了解一下angular中的依赖注入,希望对大家有所帮助! 依赖注入概念: 维基百科对依赖注入的解释:在软件工程中,依赖注入是实现控制反转的一种软件设计模式,一个依赖是一个被其他对象(client)调用的对象(服…

    2025年3月7日
    200
  • 聊聊Angular中常用的错误处理方式

    本篇文章带大家深入了解一下angular中常用的错误处理方式,希望对大家有所帮助! 错误处理是编写代码经常遇见的并且必须处理的需求,很多时候处理异常的逻辑是为了避免程序的崩溃,本文将简单介绍Angular处理异常的方式。【相关教程推荐:《a…

    2025年3月7日
    200
  • 带你了解Angular10中的双向绑定

    下面本篇文章带大家了解一下双向绑定,看看angular中两种类型的双向绑定,希望对大家有所帮助! 前面我们了解了属性绑定、事件绑定以及输入和输出的使用,是时候了解双向绑定了。本节,我们将利用@Input()和@Output()来了解下双向绑…

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论