【发布时间】:2017-11-19 15:34:28
【问题描述】:
我在父组件中有 2 个子组件,childA 和 childB 充当 master/detail。
我正在使用从 webAPI 获取数据的共享服务,而这些孩子使用此共享服务来获取数据。
api/messages - 获取所有消息/Master
api/messages/1 - 获取 1 条带有 id/Detail 的消息
作为主人的子 A 使用服务在视图中显示消息列表。 api/messages 返回所有消息,每条消息都有一个id。
现在,当我单击消息上的主列表时,我能够获取消息的 ID 并将其保存到 Master 组件中的变量中。 现在的问题是如何在主组件中单击消息时在详细组件中显示消息详细信息。我尝试将 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);
}
}
【问题讨论】:
-
也只是将 id 传递给子组件是行不通的。它应该将 id 传递给子组件并触发详细组件的功能,可能在子组件中显示详细信息(3)......但是只有在主组件中按下它时才能做到这一点
-
您可以在子组件中设置 ID 时调用 API,基本上您可以添加一个设置器,您可以在其中检查设置的 ID 并从那里调用 API,将我的答案更新为好吧,干杯!!