6

Je souhaite créer un service qui peut interagir avec un composant. Tous les autres composants de mon application devraient pouvoir appeler ce service, et ce service devrait interagir avec ce composant.Comment appeler la méthode de composant du service? (angular2)

Comment appeler la méthode de composant du service?

@Component({ 
    selector:'component' 
}) 
export class Component{ 

    function2(){ 
    // How call it? 
    } 
} 

De ce service?

@Injectable() 

export class Service { 


    callComponentsMethod() { 
    //From this place?; 
     } 
} 
+0

Vous devez extraire la méthode 'callComponentsMethod' à un service, puis injecter le service aux deux endroits –

Répondre

8

L'interaction entre les composants peut en effet être réalisée en utilisant des services. Vous devrez injecter l'utilisation du service pour la communication inter-composants dans tous les composants qui devront l'utiliser (tous les composants de l'appelant et la méthode de l'appelé) et utiliser les propriétés d'Observables.

Le service partagé peut ressembler à ceci:

import { Injectable } from '@angular/core'; 
import { Subject } from 'rxjs/Subject'; 

@Injectable() 
export class CommunicationService { 

    // Observable string sources 
    private componentMethodCallSource = new Subject<any>(); 

    // Observable string streams 
    componentMethodCalled$ = this.componentMethodCallSource.asObservable(); 

    // Service message commands 
    callComponentMethod() { 
    this.componentMethodCallSource.next(); 
    } 
} 

J'ai créé un exemple de base here, où en cliquant sur un bouton de Component1 appellera une méthode de Component2.

Si vous souhaitez en savoir plus sur le sujet, s'il vous plaît se référer à la section de documentation dédiée: https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

+0

Il appelle callComponentMethod , mais n'appelle pas componentMethodCallSource. Avez-vous une idée pourquoi? –

+0

Je ne comprends pas vraiment votre question. Le résultat final est que Component1 appelle une méthode de Component2. N'est-ce pas ce dont vous avez besoin? –

+0

Je ne comprends pas pourquoi, mais n'appelle pas la fonction nécessaire. –