将组件级服务注入Resolve

时间:2017-07-14 05:00:49

标签: angular angular-routing angular-components

让我们看看我是否可以解释这一点。

我有服务,我们称之为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应用程序非常有效。这很简单,因为我有一项服务来获取数据。现在我有多种服务。

我需要让组件等待(例如ResolverBaseDataService来完成查询。但是每个组件都有自己的专用服务,所以据我所知,我不能将组件的服务注入我的路由中的解析器......我可以吗?

0 个答案:

没有答案