У меня есть 2 компонента, с которыми нужно общаться, и служба в середине.
Услуги
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class CommunicationService {
// Observable string sources
private onOpen = new Subject<any>();
// Observable string streams
onOpen = this.onOpen.asObservable();
// Service message commands
callComponentMethod() {
this.onOpen.next();
}
}
Компонент A
import { Component } from '@angular/core';
import { CommunicationService } from './communication.service.ts'
@Component({
selector: 'app-comp1',
template: `
<button type="button" (click)="callMethod()">Call method from Component1</button>
`
})
export class Component1 {
constructor( private communicationService: CommunicationService ) { }
callMethod = function () {
this.communicationService.onOpen();
}
}
Компонент B
import { Component } from '@angular/core';
import { CommunicationService } from './communication.service.ts'
@Component({
selector: 'app-comp2',
template: ``
})
export class Component2 {
constructor( private communicationService: CommunicationService ) {
this.communicationService.onOpen.subscribe(
() => {
alert('(Component2) onOpen');
}
);
}
}
после этого плункера: http://plnkr.co/edit/SmntWy0GTNdvGB5Jb3hO?p=preview метод вызывается, но я бы хотел передать параметр. Как мне это сделать ?