一般实现非父子之间通信我们可以使用localstorage和通过模块之间共享service并订阅更新实现,下面介绍第二种方法的实现:
1.新建global.service.ts2
import { Injectable } from '@angular/core';
import {Observable} from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class GlobalService {
private subject = new Subject<any>();
sendMessage(message: string) {
this.subject.next({ text: message });
}
clearMessage() {
this.subject.next();
}
getMessage(): Observable<any> {
return this.subject.asObservable();
}
}
2.发送信息组件
import { Component, OnInit } from '@angular/core';
import {GlobalService} from '../../../../service/global.service';
...
constructor(
private global: GlobalService,
) {
}
ngOnInit() {
this.sendMessage();
}
sendMessage(): void {
this.messageService.sendMessage('发送信息');
}
...
3.接受信息组件
import { Component, OnInit } from '@angular/core';
import {GlobalService} from '../../../service/global.service';
import {Subscription} from 'rxjs';
....
public headerTit: any;
constructor(
private global: GlobalService,
) {
this.Subscription = this.global
.getMessage().subscribe( message => {
this.headerTit = message;
console.log(this.headerTit);
});
}
ngOnInit() {
}
.....