2017-10-20 44 views
-2

我正在使用Angular 4,我想知道如何將參數值傳遞給服務。Angular 4 - (onclick)將參數傳遞給服務

例如:

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

然後,服務會得到它。

目前,我有這樣的:

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

@Injectable() 
export class MessageService { 

    constructor() { } 

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

} 

,然後得到的是這樣的:

export class AppComponent implements OnInit { 

    constructor(private messageService: MessageService) {} 

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

} 

但這只是將數據發送到組件。

我該怎麼做?

+0

您想將'myParameter'傳遞給MessageService上的方法嗎?你是什​​麼意思,但這只是把數據發送到組件。'? – Steveadoo

+0

你基本上有這個想法。只需在你的組件中創建一個名爲doS​​omething的函數。這個函數然後調用服務方法 – jmw5598

回答

2

您的模板應該與您的組件類對話,並且您的組件類應該與您的服務進行通信。

我看到您的模板中有一個doSomething方法未在組件中定義?

你需要的東西是這樣的:

組件1

export class AppComponent implements OnInit { 

    constructor(private messageService: MessageService) {} 

    ngOnInit() { 

    } 

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

} 

服務

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

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

    constructor() { } 

} 

組件2

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

    constructor(private messageService: MessageService) {} 

    ngOnInit() { 

    } 
} 
+0

基本上我會嘗試使用一個服務,我可以將組件1中的參數傳遞給組件2 ...是這樣嗎? – max2020

+2

是的。我在這裏有一個工作示例:https://plnkr.co/edit/KT4JLmpcwGBM2xdZQeI9?p=preview並在此處發佈一篇博客文章:https://blogs.msmvps.com/deborahk/build-a-simple-angular- service-to-share-data/ – DeborahK

+1

最好的方法是在您的服務中使用Obserable,並讓這兩個組件都訂閱Obserable。如果您查看角度文檔,組件與服務的交互,它應該向您展示這個例子 – jmw5598