美文网首页
[Angular学习笔记]Angular组件通讯

[Angular学习笔记]Angular组件通讯

作者: salt_fash | 来源:发表于2019-07-17 10:08 被阅读0次

组件通讯

前端框架,例如extjs,vue,angular等,都是或趋于组件化,所以组件间的通讯,是一个亟需解决的问题

一般而且言,这些组件之间都会形成这种树形结构

组件之间会有下列3种关系:

  • 父子关系

  • 兄弟关系

  • 没有直接关系

本文这要介绍一下几种通讯方式:

  • @Input(父传子)
  • @Output(子传父)

目前先写这两种方式,其他方式等我再学几天在写

@Input->父对子传值

@Input为一个装饰器,用来把某个类字段标记为输入属性,并提供配置元数据。 该输入属性会绑定到模板中的某个 DOM 属性。当变更检测时,Angular 会自动使用这个 DOM 属性的值来更新此数据属性。
使用方法也很简单,但是前提需要先从@angular/core引入

import { Input } from '@angular/core';

然后就可以愉快的使用了

@Input() prentData;

放上完整代码:
父组件:

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-root',
  template: `
    <p>我是父组件</p>
    <app-child [prentData]="testData"></app-child>
  `,
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'test';
  testData: number;
  ngOnInit(): void {
    this.testData = 1;
  }
}

子组件:

import { Component, OnInit, Input } from '@angular/core';

@Component({
  selector: 'app-child',
  template: `
    <p>我是子组件</p>
    <p>父组件传过来的值:{{ prentData }}</p>
  `,
  styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
  @Input() prentData;
  constructor() { }

  ngOnInit() {
  }
}
运行效果

@Output ->子对夫传值

没有错,@Output也是一个装饰器,也要先进行引入再使用

import { Output } from '@angular/core';

还需要引入一个EventEmitter这玩意,咱也不知道这是啥,咱也不敢问

import { EventEmitter } from '@angular/core';

啥也不说了,直接上代码吧

  • 子组件
import { Component, OnInit, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'app-child',
  template: `
    <p>我是子组件</p>
    <button (click)="childClick()">点我向父组件传值</button>
  `,
  styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
  @Output() childData = new EventEmitter<string>();//将字段标记为输出类型
  childClick() {//监听事件,并通知父组件
    this.childData.emit('我是子组件传过来的值');
  }
  ngOnInit() {
  }

}

  • 父组件
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-root',
  template: `
    <p>我是父组件</p>
    <p>{{ testData }}</p>
    <app-child (childData)="childClick($event)" ></app-child><!--监听事件,并绑定处理方法childClick()-->
  `,
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'test';
  testData: string;
  //处理事件,并将子组件传过来的值赋值给testData变量
  childClick(childData: string) {
    this.testData = childData;
  }
  ngOnInit(): void {
  }
}

点击前
点击后

相关文章

  • [Angular学习笔记]Angular组件通讯

    组件通讯 前端框架,例如extjs,vue,angular等,都是或趋于组件化,所以组件间的通讯,是一个亟需解决的...

  • Angular4-学习笔记-4-模板语法

    学习资料来自 Angular.cn 与 Angular.io。 模板语法 在线例子 在 Angular 中,组件扮...

  • Angular参考资料收集

    1 、Angular2文档学习的知识点摘要——Angular模块(NgModule) 2、Angular2父子组件...

  • 2019-11-03

    angular8 angular ngFor 遍历map 数据 使用keyvalue 管道 angular 在组件...

  • 组件通讯

    2017年46周学习总结 angular组件间通讯 组件输入输出 当子组件需要向父组件传递信息时需要用到输出属性,...

  • Angular 5 自定义文件上传组件(四)

    Angular 5 自定义文件上传组件(一)Angular 5 自定义文件上传组件(二)Angular 5 自定义...

  • Angular组件篇

    Angular组件 一:组件基础 1:什么是组件? 组件(Component)是构成Angular应用的基础和核心...

  • angular2 组件之间传值及事件传递

    简介 angular2及以后的版本(包括angular4)都称为angular。组件之间的传值主要分为父子组件间传...

  • angular内置指令相关知识

    大纲 1、angular指令的分类2、angular指令之——组件3、angular指令之——属性指令 (ngSt...

  • 来一波angular2概念

    Angular2学习之: angular2官方将框架按以下结构划分: Module(模块) 组件、方法、类、服务等...

网友评论

      本文标题:[Angular学习笔记]Angular组件通讯

      本文链接:https://www.haomeiwen.com/subject/kdbgkctx.html