親コンポーネント内に2つの子コンポーネントがあり、子コンポーネントと子コンポーネントがmaster/detailとして動作します。角4子コンポーネント間のマスター/詳細サービス通信
私はWEBAPIからデータを取得し、共有サービスを使用していますし、これらの子供たちは、データを取得するには、この共有サービスを使用します。
API /メッセージ - /マスターのすべてのメッセージを取得
API /メッセージ/ 1 - ディスプレイにサービスを使用して、マスターのID /詳細
子Aと1つのメッセージを取得しますビュー内のメッセージのリストapi/messagesはすべてのメッセージを返し、各メッセージはidを持ちます。
メッセージのマスターリストをクリックすると、メッセージのIDを取得して、マスターコンポーネントの変数に保存できます。 問題は、メッセージがマスターコンポーネントでクリックされたときに、メッセージの詳細を詳細コンポーネントに表示する方法です。私はサービスにIDを渡してみましたが、それは
メッセージサービスの共有を動作しません:
export class MessageService {
constructor(private http: HttpClient) { }
getMessages(): Observable<any> {
return this.http.get('/api/messages').map(data => data)
}
getMessageById(): Observable<any> {
return this.http.get('/api/messages/3').map(data => data)
// ID 3は、マスターコンポーネントから来て、そのIDを渡す必要があります。
}
}
マスターコンポーネント:リスト内のメッセージの表示リスト
emails: any[];
constructor(private messageService: MessageService) { }
ngOnInit() {
this.messageService.getMessages().subscribe(data => this.emails =
data.messages);
}
}
詳細コンポーネント
message;
constructor(private messageService: MessageService) {
}
ngOnInit() {
this.messageService.getMessageById().subscribe(data => this.message =
data);
}
}
にReduxの詳細を読むことができます。それは子供にIDを渡す必要がありますし、詳細なコンポーネントの機能を起動する必要があります子供のコンポーネントではおそらくshowdetail(3)...しかし、それがマスターコンポーネントで押された場合にのみ行う方法 – AlexFF1
IDが子に設定されているときにAPIを呼び出すことができます基本的には、設定されているIDが何であるかをチェックし、そこからAPIを呼び出すことができるセッターを追加するだけで、私の答えも更新しました。乾杯! –