Angular2では、component1(左のパネルナビゲータとして使用)とcomponent2(これらの2つのコンポーネントは互いに兄弟、親、子など) 。 component2からcomponent1の関数を呼び出すにはどうすればよいですか? ここではイベントバインドを使用できません。他のコンポーネントのコンポーネント内の関数を呼び出す
2
A
答えて
2
共有サービスは、関連していないコンポーネント間の一般的な通信方法です。 コンポーネントにはuse a single instance of the serviceが必要です。ルートレベルで提供されていることを確認してください。
共有サービス:
@Injectable()
export class SharedService {
componentOneFn: Function;
constructor() { }
}
コンポーネント1:
export class ComponentOne {
name: string = 'Component one';
constructor(private sharedService: SharedService) {
this.sharedService.componentOneFn = this.sayHello;
}
sayHello(callerName: string): void {
console.log(`Hello from ${this.name}. ${callerName} just called me!`);
}
}
コンポーネント2:
export class ComponentTwo {
name: string = 'Component two';
constructor(private sharedService: SharedService) {
if(this.sharedService.componentOneFn) {
this.sharedService.componentOneFn(this.name);
// => Hello from Component one. Component two just called me!
}
}
}
この投稿は、同様に役に立つかもしれません:Angular 2 Interaction between components using a service
+0
これはまだ2011年10月24日に動作しますか?指定したとおりに正確に試しましたが、comp2から呼び出されたときにcomp1の名前は未定義と表示されます。 – overboard182
0
関連のないコンポーネントと通信するために、角度BehaviorSubjectを使用できます。 abovを使用して
サービスファイル
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class commonService {
private data = new BehaviorSubject('');
currentData = this.data.asObservable()
constructor() { }
updateMessage(item: any) {
this.data.next(item);
}
}
まずコンポーネント
constructor(private _data: commonService) { }
shareData() {
this._data.updateMessage('pass this data');
}
第二の成分
constructor(private _data: commonService) { }
ngOnInit() {
this._data.currentData.subscribe(currentData => this.invokeMyMethode())
}
メソッドを呼び出して、関連していないコンポーネントと簡単にデータを共有することができます。
関連する問題
- 1. コンポーネントの関数をAngular2の他のコンポーネントから呼び出す方法は?
- 2. 反応ネイティブの他のコンポーネントから関数を呼び出す
- 3. vueの他のコンポーネントを呼び出す
- 4. 子コンポーネントの親コンポーネント関数を角で呼び出す
- 5. 兄弟コンポーネント内の関数を呼び出すReactjs
- 6. AngularJS - コンポーネントに関数を呼び出す
- 7. 他のコンポーネントからEmberコンポーネントを呼び出す方法は?
- 8. 共有サービス内のコンポーネントの関数呼び出し
- 9. 親コンポーネント呼び出しを関数に呼び出す2
- 10. 親コンポーネントから子コンポーネント関数を呼び出す
- 11. 他のコンポーネントの関数を呼び出すボタンを実行する方法
- 12. 角2コンポーネント関数呼び出し
- 13. Ionic 2コンポーネント内で関数を呼び出す
- 14. React:子コンポーネント内で関数を呼び出す
- 15. 同じコンポーネント内のコンポーネントからメソッドを呼び出す
- 16. 親コンポーネント内の関数が完了した後の子コンポーネントの呼び出し関数
- 17. Angular2は別のコンポーネントから1つの関数コンポーネントを呼び出す
- 18. メソッドを親コンポーネントに呼び出すコンポーネントの関数をユニットテストする方法
- 19. すべての子コンポーネントの関数を呼び出す
- 20. Angularjs2あるコンポーネントから別のコンポーネントに関数を呼び出す方法は?
- 21. 別のコンポーネントの関数を呼び出す方法
- 22. Fortran:関数内の他の関数を呼び出す
- 23. 他の関数内の関数をMobxで呼び出す
- 24. 外部の他の関数内で関数を呼び出す
- 25. パラメータ付きコンポーネント内のAngular2呼び出しコンポーネント
- 26. 反応内の別のコンポーネントから関数を呼び出す方法
- 27. 親コンポーネントの角2で定義された子コンポーネントの呼び出し関数
- 28. 子コンポーネントの親関数を呼び出す
- 29. React Nativeの親コンポーネントから子関数を呼び出す
- 30. 動的にロードされるコンポーネントの関数を呼び出す
あなたはおそらく、その接続を管理するために、[サービス](https://angular.io/docs/ts/latest/tutorial/toh-pt4.html)を使用すると思います。 – ryannjohnson
フラックスパターンの使用 - サービスはイベントのディスパッチャであり、コンポーネントはサブスクライバです。コンポーネントは実際にお互いを知りません。これは便利かもしれません:http://stackoverflow.com/questions/42219858/how-can-i-maintain-the-state-of-dialog-box-with-progress-all-over-my-angular-2-a/42221273#42221273 – pixelbits
@ryannjohnson component1には補間{{total}}があります。この補間は直ちに更新して左パネルに表示する必要があります。私が単にサービスを呼び出すと、この変数をどのように更新できますか? –