angular service 進行組件通信
阿新 • • 發佈:2018-10-25
com 組件通信 provide ges obs init tor 接收消息 root
MessageService 代碼如下
import { Injectable } from '@angular/core'; import { Subject } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class MessageService { private messageSource = new Subject<string>(); message$ = this.messageSource.asObservable(); messageAction(name: string) { this.messageSource.next(name); } }
發送消息的組件 代碼如下
ts
import { Component} from '@angular/core'; import { MessageService } from '../service/message.service'; @Component({ selector: 'app-send', templateUrl: './send.component.html', styleUrls: ['./send.component.css'] }) export class SendComponent { constructor(private messageService: MessageService) { } sendMessage(action: string) { this.messageService.messageAction(action); }
html
<input #action>
<button (click)="sendMessage(action.value)">action</button>
接收消息的組件
ts
import { Component, OnInit, OnDestroy } from '@angular/core'; import { MessageService } from './service/message.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit, OnDestroy { action: string; sub: Subscription; ngOnInit(): void { this.messageService.message$.subscribe(action => this.action = action); } ngOnDestroy(): void { this.sub.unsubscribe(); //不要忘記取消訂閱 } constructor(private messageService: MessageService) { }
angular service 進行組件通信