我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Angular组件间进行交互的方法有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Angular组件间进行交互的方法有哪些

本篇内容介绍了“Angular组件间进行交互的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、通过输入型绑定把数据从父组件传到子组件

child.component.ts

export class ChildComponent implements OnInit {
  @Input() hero: any;
  @Input('master') masterName: string;      // 第二个 @Input 为子组件的属性名 masterName 指定一个别名 master

  constructor() { }

  ngOnInit(): void {
  }

}

child.component.html

<div style="background-color: #749f84">
  <p>child works!</p>
  <h4>{{hero?.name}} says:</h4>
  <p>I, {{hero?.name}}, am at your service, {{masterName}}.</p>
</div>

parent.component.ts

export class ParentComponent implements OnInit {
  hero = {name: 'qxj'}
  master = 'Master'

  constructor() {
  }

  ngOnInit(): void {
  }

}

parent.component.html

<app-child [hero]="hero" [master]="master"></app-child>

2、父组件监听子组件的事件

child.component.ts

export class ChildComponent implements OnInit {
  @Input()  name: string;
  @Output() voted = new EventEmitter<boolean>();
  didVote = false;

  vote(agreed: boolean) {
    this.voted.emit(agreed);
    this.didVote = true;
  }

  constructor() { }

  ngOnInit(): void {
  }

}

child.component.html

<h5>{{name}}</h5>
<button (click)="vote(true)"  [disabled]="didVote">Agree</button>
<button (click)="vote(false)" [disabled]="didVote">Disagree</button>

parent.component.ts

export class ParentComponent implements OnInit {
  agreed = 0
  disagreed = 0
  voters = ['Narco', 'Celeritas', 'Bombasto']

  onVoted(agreed: boolean) {
    agreed ? this.agreed++ : this.disagreed++
  }

  constructor() {
  }

  ngOnInit(): void {
  }

}

parent.component.html

<h3>Should mankind colonize the Universe?</h3>
<h4>Agree: {{agreed}}, Disagree: {{disagreed}}</h4>
<app-child *ngFor="let voter of voters" [name]="voter" (voted)="onVoted($event)"></app-child>

Angular组件间进行交互的方法有哪些

3、父组件与子组件通过本地变量互动

父组件不能使用数据绑定来读取子组件的属性或调用子组件的方法。但可以在父组件模板里,新建一个本地变量来代表子组件,然后利用这个变量来读取子组件的属性和调用子组件的方法,如下例所示。

子组件 CountdownTimerComponent 进行倒计时,归零时发射一个导弹。startstop 方法负责控制时钟并在模板里显示倒计时的状态信息。

child.component.ts

export class ChildComponent implements OnInit, OnDestroy {
  intervalId = 0
  message = ''
  seconds = 11

  clearTimer() {
    clearInterval(this.intervalId)
  }

  ngOnInit() {
    this.start()
  }

  ngOnDestroy() {
    this.clearTimer()
  }

  start() {
    this.countDown()
  }

  stop() {
    this.clearTimer()
    this.message = `Holding at T-${this.seconds} seconds`
  }

  private countDown() {
    this.clearTimer()
    this.intervalId = window.setInterval(() => {
      this.seconds -= 1
      if (this.seconds === 0) {
        this.message = 'Blast off!'
      } else {
        if (this.seconds < 0) {
          this.seconds = 10
        } // reset
        this.message = `T-${this.seconds} seconds and counting`
      }
    }, 1000)
  }

}

child.component.html

<p>{{message}}</p>

parent.component.ts

export class ParentComponent implements OnInit {
  constructor() {
  }
  ngOnInit(): void {
  }
}

parent.component.html

<h4>Countdown to Liftoff (via local variable)</h4>
<button (click)="child.start()">Start</button>
<button (click)="child.stop()">Stop</button>
<div class="seconds">{{child.seconds}}</div>
<app-child #child></app-child>

Angular组件间进行交互的方法有哪些

4、父组件调用@ViewChild()

这个本地变量方法是个简单便利的方法。但是它也有局限性,因为父组件-子组件的连接必须全部在父组件的模板中进行。父组件本身的代码对子组件没有访问权。

如果父组件的需要读取子组件的属性值或调用子组件的方法,就不能使用本地变量方法。

当父组件需要这种访问时,可以把子组件作为 ViewChild,***注入***到父组件里面。

countdown-parent.component.ts

import {AfterViewInit, Component, ViewChild} from '@angular/core'
import {ChildComponent} from '../child/child.component'

@Component({
  selector: 'app-parent-vc',
  template: `
    <h4>Countdown to Liftoff (via ViewChild)</h4>
    <button (click)="start()">Start</button>
    <button (click)="stop()">Stop</button>
    <div class="seconds">{{ seconds() }}</div>
    <app-child></app-child>
  `,
})
export class CountdownParentComponent implements AfterViewInit {

  @ViewChild(ChildComponent)
  private timerComponent: ChildComponent

  seconds() {
    return 0
  }

  ngAfterViewInit() {
    // Redefine `seconds()` to get from the `ChildComponent.seconds` ...
    // but wait a tick first to avoid one-time devMode
    // unidirectional-data-flow-violation error
    setTimeout(() => {
      this.seconds = () => this.timerComponent.seconds
    }, 0)
  }

  start() {
    this.timerComponent.start()
  }

  stop() {
    this.timerComponent.stop()
  }
}

“Angular组件间进行交互的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Angular组件间进行交互的方法有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Angular组件的交互方式有哪些

这篇文章主要介绍Angular组件的交互方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Angular 组件交互组件交互: 组件通讯,让两个或多个组件之间共享信息。使用场景: 当某个功能在多个组件中被使用到时
2023-06-14

Angular组件间进行通信的方法有哪些

这篇“Angular组件间进行通信的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Angular组件间进行通信的方
2023-07-04

angular组件传值的方法有哪些

Angular组件之间传值的方法有以下几种:输入属性(@Input):在子组件上通过@Input装饰器定义一个输入属性,然后在父组件中通过绑定语法将值传递给子组件。输出属性(@Output)和事件触发:在子组件中通过@Output装饰器定义
2023-10-24

带你了解Angular组件间进行通信的几种方法

Angular组件间怎么通信?下面本篇文章带大家了解一下Angular中组件通信的方法,希望对大家有所帮助!
2023-05-14

vue中组件间相互通信传值的方法有哪些

这篇文章主要讲解了“vue中组件间相互通信传值的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中组件间相互通信传值的方法有哪些”吧!vue中组件之间相互通讯传值的方式我们在使
2023-06-29

vue组件之间相互传值的方式有哪些

这篇文章给大家分享的是有关vue组件之间相互传值的方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。概述我们都知道 Vue 作为一个轻量级的前端框架,其核心就是组件化开发。Vue 就是由一个一个的组件构成的
2023-06-15

php与数据库交互的方法有哪些

PHP与数据库交互的方法有以下几种:1. 使用原生的MySQLi扩展:PHP提供了MySQLi扩展,可以使用该扩展连接MySQL数据库,并执行数据库操作,如查询、插入、更新和删除等。2. 使用PDO扩展:PHP提供了PDO(PHP Data
2023-08-24

Vue组件间通信的方法有哪些

这篇“Vue组件间通信的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue组件间通信的方法有哪些”文章吧。方法一
2023-07-05

React组件间通信的方法有哪些

这篇文章给大家分享的是有关React组件间通信的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、父子组件通信原理:父组件通过props(与vue中的props区分开)向子组件通信,子组件通过回调事件与
2023-06-25

ajax前后端数据交互的方法有哪些

在Ajax中,前端和后端之间的数据交互有以下几种方法:1. 使用XMLHttpRequest对象:通过创建XMLHttpRequest对象,可以发送HTTP请求到服务器,并接收服务器返回的数据。这是最基本的Ajax方法。2. 使用fetch
2023-08-09

Node.js进行文件操作的方法有哪些

这篇文章主要介绍“Node.js进行文件操作的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node.js进行文件操作的方法有哪些”文章能帮助大家解决问题。Node.js是一个基于Chro
2023-07-05

Java对数组进行初始化的方法有哪些

Java对数组进行初始化的方法有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、数组1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组
2023-06-06

Vue3组件间传值避坑方法有哪些

实例填坑坑一1.发现天坑我们通过一个计数器组件来演示这个坑,当想对父组件传递过来的值做操作时,发现操作无效,先看代码:组件间传值constapp=Vue.createApp({data(){return{num:0}},template:``});//定义一个test组件app.component(&#39;counter&#39;,{props:[&#39;count&#39;],template:`{{count}}`});constvm=app.mount(
2023-05-15

Vue组件间的通讯方式有哪些

本篇内容主要讲解“Vue组件间的通讯方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue组件间的通讯方式有哪些”吧!前言Vue 提供了各种各样的通讯,其中包括兄弟间的通讯和非兄弟间的通
2023-06-27

qt进程间通信的方法有哪些

Qt进程间通信的方法有以下几种:信号与槽:通过Qt的信号与槽机制,可以在不同的进程之间进行通信。一个进程可以发射信号,另一个进程可以接收并处理这个信号。本地套接字(Local Socket):通过使用Qt提供的QLocalServer和QL
2023-10-21

python中有哪些进行比较的方法

python中有哪些进行比较的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、说明比较操作符in和not in检查一个值是否在一个序列中出现。操作符is和is not比较
2023-06-15

uniapp组件传值的方法有哪些

这篇文章主要介绍“uniapp组件传值的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“uniapp组件传值的方法有哪些”文章能帮助大家解决问题。父组件给子组件传值创建子组件comp.vue
2023-07-05

编程热搜

目录