
typescript
typescript// 父组件@Component({ selector: 'app-parent', template: <code> <app-child [message]="message" (messageEvent)="receiveMessage($event)"></app-child> </code>})export class ParentComponent { message: string = "Hello, child!"; receiveMessage($event) { this.message = $event; }}// 子组件@Component({ selector: 'app-child', template: <code> {{ message }}
<button (click)="sendMessage()">Send Message</button> </code>})export class ChildComponent { @Input() message: string; @Output() messageEvent = new EventEmitter<string>(); sendMessage() { this.messageEvent.emit("Hello, parent!"); }}在上面的示例中,父组件通过输入属性 message 将消息传递给子组件。子组件通过输出属性 messageEvent 向外部发送消息,并通过调用 messageEvent.emit() 方法发送消息。父组件通过监听子组件的输出事件,并在事件处理程序中接收消息。2. 使用共享服务进行通信:共享服务是一个被多个组件共享的服务,它可以用来存储和管理共享数据。通过在共享服务中定义变量和方法,我们可以在同级组件之间共享数据和进行通信。下面是一个简单的示例:typescript// 共享服务@Injectable()export class DataService { private messageSource = new BehaviorSubject<string>("Hello, siblings!"); currentMessage = this.messageSource.asObservable(); changeMessage(message: string) { this.messageSource.next(message); }}// 组件 A@Component({ selector: 'app-component-a', template: <code> {{ message }}
<button (click)="sendMessage()">Send Message</button> </code>})export class ComponentA { message: string; constructor(private dataService: DataService) { this.dataService.currentMessage.subscribe(message => { this.message = message; }); } sendMessage() { this.dataService.changeMessage("Hello, siblings from Component A!"); }}// 组件 B@Component({ selector: 'app-component-b', template: <code> {{ message }}
<button (click)="sendMessage()">Send Message</button> </code>})export class ComponentB { message: string; constructor(private dataService: DataService) { this.dataService.currentMessage.subscribe(message => { this.message = message; }); } sendMessage() { this.dataService.changeMessage("Hello, siblings from Component B!"); }}在上面的示例中,我们创建了一个名为 DataService 的共享服务。该服务使用 BehaviorSubject 来存储和管理消息,并通过 currentMessage 属性提供了一个可观察的流来订阅消息的变化。组件 A 和组件 B 都通过依赖注入方式引入了 DataService,并在构造函数中订阅了消息的变化。它们可以通过调用 dataService.changeMessage() 方法来发送消息,同时也会接收到其他组件发送的消息。在本文中,我们讨论了 Angular 中同级作用域之间的通信,并提供了两种常用的方法:通过输入和输出属性进行通信,以及使用共享服务进行通信。这些方法可以帮助我们在同级组件之间实现数据的传递和通信,从而构建更加灵活和交互的应用程序。希望这些案例代码和解释能够帮助你更好地理解和应用 Angular 中的同级作用域通信机制。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号