2016-10-28 1 views
5

У меня есть два компонента componentA и componentB. Оба они являются сибменами и являются дочерними элементами componentMother.Как вызвать функцию от одного компонента к другому в угловом2?

Я хочу сделать так, что когда я нажимаю кнопку на компоненте А, она вызывает вызов функции на компоненте Б.

Это способ сделать это, используя услугу с наблюдаемым и имеющую события, генерирующие компонентА, которые компонент B подписывает или имеет лучший/лучший способ?

+0

Это, или испускают событие с выхода в A , к которому абонентский абонент подписывается и устанавливает ввод или вызывает метод od on B. –

+1

проверить http://stackoverflow.com/questions/39132385/communicate-between-sibling-components-anguar-2/39132530#39132530. он должен ответить на ваш вопрос – kit

+0

Я бы сделал местный небольшой сервис, это самый чистый способ. – tibbus

ответ

6

я бы, вероятно, использовать сервис, который использует Subject. Таким образом, это может быть как опубликован и подписан от

import { Subject } from 'rxjs/Subject'; 

class SomeService { 
    private _subject = new Subject<any>(); 

    newEvent(event) { 
    this._subject.next(event); 
    } 

    get events$() { 
    return this._subject.asObservable(); 
    } 
} 

От ваших компонентов, можно публиковать и можно подписаться

@NgModul({ 
    providers: [ SomeService ] 
}) 
class AppModule {} 

@Component() 
class ComponentOne { 
    constructor(private service: SomeService) {} 

    onClick() { 
    service.newEvent('clicked!'); 
    } 
} 

@Component() 
class ComponentTwo { 
    constructor(private service: SomeService) {} 

    ngOnInit() { 
    this.service.events$.forEach(event => console.log(event)); 
    } 
} 

Смотри также:

2

Использование RxJS SUBJECT (~ EventEmitter):import { Subject } from 'rxjs/Subject';

Служба темы позволит вам включить двунаправленную связь для родительского компонента и его дочерних элементов.

Ссылка: https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service

Для получения более подробной информации о

RxJs ПРЕДМЕТ

проверка этот: https://www.youtube.com/watch?v=rdK92pf3abs

Смежные вопросы