いくつかの解決策:
1 - サービスを使用します。 2つのコンポーネントに設定したデータを格納するために、少なくともSubjectを含むイベントが必要です。
2 - 親コンポーネントの出力/入力を使用します。
3 - 出力とともにViewChildコンポーネントを使用します。親コンポーネントは出力を受け取ると、ビューの子バインディングを介して子コンポーネント内のmetyhodを呼び出します。
私は通常
そして、受信する必要があるクラスのサービスを注入した後に、メッセージをブロードキャストする必要があるクラスでは、被験者その後
import {Injectable} from '@angular/core';
import {Observable, Subject} from "rxjs";
/**
* Event Types
*/
export const MyAppEventTypes =
{
EventType1: 'EventType1'
//...
};
/**
* Events
*/
export class MyAppEvent
{
type: string;
data: any;
}
/**
* Service in charge of broadcasting messages
*/
@Injectable()
export class MessageService
{
/**
* Subject to trigger events
* @type {Subject<MyAppEvent>}
*/
private myAppEventSubject: Subject<MyAppEvent> = new Subject<MyAppEvent>();
/**
* The observable for events
* @type {"../../Observable".Observable<MyAppEvent>}
*/
public readonly myAppEvent$: Observable<MyAppEvent> = this.myAppEventSubject.asObservable();
/**
* Broadcasts a message
* @param name
* @param data
*/
broadcast(name: string, data)
{
this.myAppEventSubject.next(
{
type: name,
data: data
});
}
}
でサービスを利用
私の側からのコースです。それはきれいなコードを作るでしょう。 – Jai