2017-10-20 19 views
-2

私は角度4を使用していますが、パラメータ値をサービスに渡す方法が不思議でした。例えば角度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

MessageServiceのメソッドに 'myParameter'を渡しますか? 'これはコンポーネントにデータを送信するだけです。' – Steveadoo

+0

あなたは基本的に考えている。 doSomethingという名前のコンポーネントに関数を作成するだけです。この関数はサービスメソッド – 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

関連する問題