【发布时间】:2019-03-05 20:23:25
【问题描述】:
我在 Angular 中提出以下请求并将响应保存在变量中:
conversations: Conversation[];
// ChatService
getConversations() {
return this.http.get<Conversation[]>('/chat/conversations');
}
this.chatService.getConversations().subscribe(
(response: Conversation[]) => this.conversations = response
);
这是来自服务器的 JSON 数据:
[
{
"chatRoomId":"096b8be1-2411-4cb1-94e0-ed96c51c23d8",
"name":"Bar",
"profilePicture":"...",
"conversation":[
{
"name":"Bar",
"message":"Hello!",
"createdAt":"2018-09-30T06:50:49.000+0000"
},
{
"name":"Foo",
"message":"Hi",
"createdAt":"2018-09-30T11:49:05.000+0000"
}
]
}
]
TypeScript 模型:
export interface Conversation {
chatRoomId: string;
name: string;
profilePicture: string;
conversation: ChatMessage[]
}
export interface ChatMessage {
name: string;
message: string;
createdAt: string;
}
问题:
如果我在控制台中输出变量,则对话(conversation: ChatMessage[])是一个空数组元素。
如果我使用this.http.get<any>('...') 发出请求,对话将按预期存储。
【问题讨论】:
-
你的模板代码中有changeDetection: ChangeDetectionStrategy.OnPush吗?
-
你在控制台输出哪个变量?
-
@Radik 是的,我收到的数据保存在我订阅的 BehaviorSubject 中。
-
@billyjov 出于调试目的,变量对话。
-
如果您使用
any类型的响应会发生什么?
标签: arrays json angular typescript