Angular中的组件

这篇具有很好参考价值的文章主要介绍了Angular中的组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

组件简介

Angular中的组件,是一个使用@component()装饰器装饰的特殊类,同时在这个装饰器中指定元数据,元数据包括组件选择器组件模板组件样式等。

组件是angular模块化的一个基本的组成元素。日常开发中,页面通常就是由一个或者多个组件堆叠而成。

组件的元数据中,声明了组件的渲染模板和组件样式表。在组件类中,包含了组件本身的数据以及一些前端交互逻辑,组件通过一些由属性和方法组成的 API 与视图交互。

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

@Component({
  selector: 'app-root',
  template: `<h1> {{ 'Hello world! '}} </h1>`,
  styles: [
    `
    h1 {
      color: green
    }
    `
  ]
})
export class AppComponent {}

组件交互

子组件通过@Input()接受父组件传递数据

在组件A中,如果有一个属性通过@Input()装饰器修饰,说明其他组件调用A组件时,可以通过数据绑定的方式进行数据的传递。

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

@Component({
  selector: 'app-root-father',
  template: `<app-root-child [name]="name" [phone]="tellphone"></app-root-child>`
})
export class FatherComponent {
	var name = '张三';
	var tellphone = '13832322077'
}
// 子组件
import { Component } from '@angular/core';

@Component({
  selector: 'app-root-child',
  template: `
  <h1> {{ name }} </h1>
  <h1> {{ tellPhone }} </h1>
  `
})
export class ChildComponent {
	@Input() name: string;
	// @Input()中可以填一个字符串用做组件属性的别名,在父组件中也可以使用属性别名进行数据绑定
	@Input('phone') tellPhone: string; 
}
ngOnChanges()钩子来监听输入属性的的变化

ngOnChanges()是angular的一个生命周期函数,当组件中的@Input()装饰器修饰的属性值发生变化时,即调用这个函数做出响应。

子组件向上传递数据

在子组件定义一个EventEmitter属性,并通过@Output()装饰器进行修饰,当发生某一个事件时,利用这个EventEmitter属性向上层发射事件。当父组件中绑定了这个事件时,就会对该事件做出响应。

// 子组件
import { Component } from '@angular/core';

@Component({
  selector: 'app-root-child',
  template: `
  <h1> {{ name }} </h1>
  <button nz-button (click)="onSayHello()">向上打招呼</button>
  `
})
export class ChildComponent {
	@Input() name: string;
	@Output() sayHello: new EventEmitter<string>();
	
	onSayHello() {
    	this.sayHello.emit('Hello,' + name + '!'); // 当点击子组件中的按钮时,向父组件emit事件,并传递参数
  	}
}
// 父组件
import { Component } from '@angular/core';

@Component({
  selector: 'app-root-father',
  template: `<app-root-child [name]="name" (sayHello)="myHello($event)"></app-root-child>`
})
export class FatherComponent {
	var name = '张三';
	
	// 父组件接收到子组件发射的事件后,随即做出响应
	myHello(e: string){
		console.log(e);
	}
}
父组件通过本地变量或者ViewChild访问子组件的方法或者属性

在之前的开发中我通常会把这两者搞混,最近细比较下来还是有一些区别的,通过本地变量的方式,只能在父组件的模板文件中访问子组件,而ViewChild装饰器可以通过在父组件中注入子组件的方式,使得子组件的属性和方法可以在父组件的代码中被访问。

// 子组件
import { Component } from '@angular/core';

@Component({
  selector: 'app-root-child',
  template: `
  <h1> {{ name }} </h1>
  `
})
export class ChildComponent {
	sayHello() {
    	console.log('Hello,' + name + '!'); 
  	}
}
// 父组件
import { Component } from '@angular/core';

@Component({
  selector: 'app-root-father',
  template: `
  <button (click)="child.sayHello()"></button>
  <app-root-child #child></app-root-child>
  `
})
export class FatherComponent {}

父组件在调用子组件时,通过#xxxx 的方式,可以赋予子组件一个类似别名的本地变量,这时候,就可以在父组件的模板文件中访问子组件的属性和方法。

ViewChild装饰器通过把子组件注入到父组件中,从而使父组件能够访问子组件:文章来源地址https://www.toymoban.com/news/detail-403621.html

// 子组件
import { Component } from '@angular/core';

@Component({
  selector: 'app-root-child',
  template: `
  <h1> {{ name }} </h1>
  `
})
export class ChildComponent {
	sayHello() {
    	console.log('Hello,' + name + '!'); 
  	}
}
// 父组件
import { Component } from '@angular/core';

import { ChildComponent } from '../app-child.childcompont'

@Component({
  selector: 'app-root-father',
  template: `
  <button (click)="hello()"></button>
  <app-root-child></app-root-child>
  `
})
export class FatherComponent {
	@ViewChild(ChildComponent)
	private childCom: ChildComponent;

	hello(){
		this.childCom.sayHello();
	}
}

到了这里,关于Angular中的组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • angular框架简介基础与使用(全文2w8字)前端框架angular

    本文的所有内容,可以在我的博客上看到,下面是地址。建议去博客看,因为csdn的这篇图片我没上传。 可以转载,但请注明出处 我的博客—点击跳转 https://numb.run Angular是谷歌开发的一款开源的web前端框架,诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀

    2024年02月02日
    浏览(45)
  • Angular-03:组件模板

    各种学习后的知识点整理归纳,非原创! 将组件类中的数据显示在组件模板中,组件类数据发生变化时会自动同步到组件模板中。(数据驱动DOM) 语法:{{}},插值表达式。 DOM对象属性 语法:[属性名] // 属性名加中括号[] HTML标签属性 [attr.属性名] // attr.属性名加中括号[] 自

    2024年02月07日
    浏览(36)
  • angular实现全局组件

    之前我们实现全局组件的第一种方式。我们是在定义了组件的时候通过在declares:[component],然后exports出该组件。最后在页面中每次导入该组件,而这次我们将采用另一种方式来实现 1 新建公用组件: 2 新建一个share.module.ts,在该module中引入我们所有的公共组件,本例中只有一个

    2024年02月12日
    浏览(44)
  • Angular组件通信

    给子组件标签自定义一个属性 子组件引入 Input 模块 父组件: 子组件: Angular的Output属性是用于子组件向父组件传递信息的一种方式。通过在子组件中定义一个Output属性,子组件可以通过EventEmitter触发这个属性,父组件可以通过@Output的形式监听子组件的属性,并在属性被触发

    2024年02月05日
    浏览(40)
  • Angular系列教程之组件

    在Angular中,组件是构建Web应用程序的核心单元。它们允许我们将UI划分为独立且可重用的部分,并通过数据绑定和事件处理等机制来实现交互性。本文将介绍Angular组件的基本概念,并说明组件和指令的关系。 组件是一个由HTML模板、样式和逻辑代码组成的独立单元。它可以看

    2024年01月17日
    浏览(38)
  • Angular组件生命周期详解

    当 Angular 实例化组件类 并渲染组件视图及其子视图时,组件实例的生命周期就开始了。生命周期一直伴随着变更检测,Angular 会检查数据绑定属性何时发生变化,并按需更新视图和组件实例。当 Angular 销毁组件实例并从 DOM 中移除它渲染的模板时,生命周期就结束了。当 Ang

    2024年02月05日
    浏览(45)
  • Angular单元测试组件

    文章目录 前言 一、 单元测试是什么? 二、配置jasmine karma 三、技术点 1. 变更监测detectChanges 2. 模拟异步fakeAsync 3. Spy 四、单元测试基础结构 1. describe 2. beforeEachafterEach 3. it 4. expect 4.1 断言方法 5. configureTestingModule 6. compileComponents 7. createComponent 8. ComponentFixture 8.1 创建固件

    2024年02月13日
    浏览(34)
  • Angular独立组件简单体验

    Angular 14一项令人兴奋的特性就是Angular的独立组件终于来了。 在Angular 14中, 开发者可以尝试使用独立组件开发各种组件,但是值得注意的是Angular独立组件的API仍然没有稳定下,将来可能存在一些破坏性更新,所以不推荐在生产环境中使用。 对于已有的组件,我们可以在 @

    2024年01月20日
    浏览(37)
  • Angular 独立组件入门

    如果你正在学习 Angular,那么你可能已经听说过独立组件(Component)。顾名思义,独立组件就是可以独立使用和管理的组件,它们能够被包含在其他组件中或被其他组件引用。 在本文中,我们将学习如何创建简单的独立组件以及如何在 Angular 应用程序中使用它们。 创建组件

    2024年02月13日
    浏览(32)
  • Angular 怎么封装基础组件?

    在Angular中,封装基础组件通常是通过创建自定义Angular组件来实现的。这些自定义组件可以包含通用的功能和样式,然后可以在应用中多次重复使用。以下是一个简单的示例,说明如何封装一个基础组件。 假设我们要创建一个通用的警告框组件,它可以在应用中的不同部分显

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包