让我们看看我是否可以解释这一点。
我有服务,我们称之为ServerSocket
。此服务处理Web套接字。
然后在组件级别,我有各种服务来扩展使用BaseDataService
来检索数据的基本服务(我们称之为ServerSocket
)。此服务位于组件级别。含义:
@Component({
selector: 'app-management',
templateUrl: './management.component.html',
styleUrls: ['./management.component.scss'],
providers: [ManagementService] <-- This is a BaseDataService
})
这样就可以创建专门用于这个组件的websocket。
ServerSocket
有一个observable,它是来自套接字的原始数据(文本),DataService
订阅了这个。
到目前为止一切顺利。
现在,有一次,我的应用程序将向套接字发送一些查询,每个查询都有一个随机令牌。类似的东西:
get DKJ39U4 server/3 users
在套接字的某个时刻,我会在其中获得带有该令牌的响应,因此我知道响应是针对该查询的。我也可以在BaseDataService
完成加载时完成,因为我已发出所有查询,我已收到回复。
到目前为止,还是那么好。
在这里,我感到难过。此时,我正在接收我收到的数据,并将其分配给可在组件/视图中使用的对象。
所以我有一些简单的东西:
this.data['DKJ39U4'] = JSON.parse(response);
但在我看来,如果我这样做:
[(ngModel)]="service.data['DKJ39U4']"
我收到一个未定义的错误,直到数据显示出来。
在之前的Angular 2应用程序中,我会使用解析器,但这对传统的GET / POST应用程序非常有效。这很简单,因为我有一项服务来获取数据。现在我有多种服务。
我需要让组件等待(例如Resolver
)BaseDataService
来完成查询。但是每个组件都有自己的专用服务,所以据我所知,我不能将组件的服务注入我的路由中的解析器......我可以吗?