2017-10-20 4 views
-2

J'utilise Angular 4 et je me demandais comment passer une valeur de paramètre à un service.Angular 4 - (onclick) paramètre pass à un service

Par exemple:

<button (onClick)="doSomething('myParameter')">Send this to Service</button> 

Alors le service recevrions.

J'ai actuellement ceci:

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

@Injectable() 
export class MessageService { 

    constructor() { } 

    message() { 
    return 'This data goes to the component'; 
    } 

} 

et obtenir est comme ceci:

export class AppComponent implements OnInit { 

    constructor(private messageService: MessageService) {} 

    ngOnInit() { 
    console.log(this.messageService.message); 
    } 

} 

mais cela envoie uniquement des données au composant.

Comment faire?

+0

Vous souhaitez transmettre 'myParameter' à une méthode sur votre MessageService? Que voulez-vous dire «mais cela envoie seulement des données au composant»? – Steveadoo

+0

Vous avez essentiellement l'idée. Créez simplement une fonction dans votre composant appelé doSomething. Cette fonction appellera alors la méthode de service – jmw5598

Répondre

2

Votre modèle devrait parler à votre classe de composant et votre classe de composant devrait parler à votre service.

Je vois que vous avez une méthode doSomething dans votre modèle qui n'est pas définie dans votre composant?

Vous avez besoin quelque chose comme ceci:

Composante 1

export class AppComponent implements OnInit { 

    constructor(private messageService: MessageService) {} 

    ngOnInit() { 

    } 

    doSomething(message: string): void { 
     this.messageService.message = message; 
    } 

} 

service

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

@Injectable() 
export class MessageService { 
    message: string; 

    constructor() { } 

} 

Composante 2

export class AppComponent implements OnInit { 
    get message(): string { 
    return this.messageService.message; 
    } 

    constructor(private messageService: MessageService) {} 

    ngOnInit() { 

    } 
} 
+0

Essentiellement je vais essayer d'utiliser un service où je peux passer un paramètre du composant 1 ... à travers le service dans le composant 2 ... est-ce le cas? – max2020

+2

Oui. J'ai un exemple de travail ici: https://plnkr.co/edit/KT4JLmpcwGBM2xdZQeI9?p=preview Et un billet de blog à ce sujet ici: https://blogs.msmvps.com/deborahk/build-a-simple-angular- service-to-share-data/ – DeborahK

+1

Le meilleur moyen serait d'utiliser et Obserable dans votre service et avoir les deux composants souscrivent à l'Obserable. Si vous regardez sur les docs angulaires, l'interaction des composants avec un service, il devrait vous montrer et l'exemple de ceci – jmw5598