angular组件的创建和调用

本文详细介绍了在Angular中创建和使用组件的过程。从组件的概念出发,通过具体步骤演示了如何利用命令行工具ng generate创建组件,并在根目录中调用新建组件的方法。

组件是什么?在我们的生活中,组件是组成一个物品必不可少的关键部位,在angular当中也是如此。在angular中,组件(Component)是构成Angular应用的基础和核心。相当于一个小模块。

那么如何创建组件?

1、打开cmd,cd到之前创建文件的目录,输入ng g

2、然后会提示选择建立什么,我们要建立组件,输入 ng component

3、然后可以通过命令创建一个组件,如下图就是建立一个新的目录component,然后在里面创建一个news组件。

在vsCode中的效果图:

以上组建就已经创建完毕了,那么如何使用这个组建?

如果我想要在根目录下面去调用我刚刚建立的这个组件,方法如下:

1、首先查看目标组件的名称

2、然后在根目录下面输入该名称(style可以删除)

3、在目标组件下输入文字

4、启动,输入ng serve --open,等待一会,就会自动打开浏览器,然后呈现出内容来。如下:

5、如果想要结束操作,在控制台里面输入ctrl+c即可。

简单的总结,感谢观看。

### 实现 Angular组件调用组件方法的方式 在 Angular 中,子组件可以通过 `@Output` `EventEmitter` 将事件传递给父组件,从而间接调用组件中的方法。这种方式遵循单向数据流原则,即子组件不直接操作父组件的状态或逻辑,而是通过事件通知父组件执行特定的操作。 以下是具体的实现方式: #### 使用 `@Output` `EventEmitter` 1. **定义子组件** 在子组件创建一个基于 `EventEmitter` 的属性,并将其标记为 `@Output()`。当某个条件满足时(例如点击按钮),可以发射该事件并携带参数到父组件。 ```typescript import { Component, Output, EventEmitter } from '@angular/core'; @Component({ selector: 'app-child', template: ` <button (click)="sendDataToParent()">发送消息</button> `, }) export class ChildComponent { @Output() notifyParent = new EventEmitter<string>(); sendDataToParent(): void { const message = "来自子组件的消息"; this.notifyParent.emit(message); // 发射事件并将消息作为参数传递 } } ``` 2. **绑定父组件监听器** 在父组件模板中,将子组件的 `notifyParent` 输出属性绑定到父组件的一个处理函数上。 ```html <!-- 父组件模板 --> <app-child (notifyParent)="handleMessage($event)"></app-child> <p>接收到的消息:{{ receivedMessage }}</p> ``` 3. **定义父组件处理函数** 在父组件类中编写用于接收响应子组件事件的函数。 ```typescript import { Component } from '@angular/core'; @Component({ selector: 'app-parent', templateUrl: './parent.component.html' }) export class ParentComponent { receivedMessage: string; handleMessage(data: string): void { console.log("接收到的数据:", data); this.receivedMessage = data; this.parentMethod(); // 调用组件的方法 } parentMethod(): void { console.log("父组件方法被调用了"); } } ``` 上述代码展示了如何利用 `@Output` `EventEmitter` 让子组件触发父组件中的方法[^1]。 --- #### 关于 `@Input` 方法的局限性 需要注意的是,如果尝试通过 `@Input` 属性直接传入父组件的方法,则会遇到作用域问题。具体表现为,在子组件内部调用此方法时,其上下文 (`this`) 是子组件实例而非父组件实例。因此无法访问父组件的相关状态或成员变量[^2]。 为了避免这种混淆,推荐始终采用 `@Output` 配合回调机制来完成父子组件间的交互需求。 --- #### 另一种方式——双向绑定与服务共享 虽然题目主要讨论了子组件调用组件方法的情况,但在某些场景下也可以考虑其他替代方案: - **双向绑定**: 如果只是简单的值同步更新,可借助 `ngModel` 或自定义输入/输出组合实现。 - **服务共享**: 对于更复杂的跨层次通信需求,建议引入独立的服务层来进行集中管理,减少组件间耦合度。 不过这些都不属于严格意义上的“子组件主动调用组件方法”,仅提供额外思路供参考。 --- ### 总结 最佳实践中提倡使用 `@Output` 结合 `EventEmitter` 来建立从子组件到父组件的通知渠道,既保持清晰分离又易于维护扩展[^3]。 ```typescript // 子组件部分 import { Component, Output, EventEmitter } from '@angular/core'; @Component({...}) export class ChildComponent { @Output() customEvent = new EventEmitter<any>(); } // 父组件部分 <app-child (customEvent)="onChildAction($event)"></app-child> ```
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值