使用服务在Angular 2应用程序中存储(和共享)初始值的最佳实践是什么?我有一个从服务器加载大量数据的服务,比如资源、配置以及其他数组和对象。我不想在每次加载组件或路由到视图时都加载这些数据,我只想使用应用程序启动时已经加载的这些对象和数组,并在需要时选择重新加载。问题是存储这些值的正确位置在哪里,以及如何在使用该服务的组件之间共享这些值?谢了。
正确的地方绝对是一种服务。如果仅在一个位置将此服务添加为提供程序,则会与整个应用程序共享一个实例。如果将其添加到每个组件上的提供程序,则每个组件都会获得自己的实例 - 这是您要避免的
bootstrap(AppComponent, [HTTP_PROVIDERS, MyService]);
@Component({
selector: 'some-comp',
providers: [/* don't add MyService here !! */]})
class MyComponent {}
您必须考虑共享服务,并确保组件之间只共享一个实例
共享服务和共享对象演示
注意:< br >不要忘记在bootstrap函数中注册服务。深入观察代码。你会得到你想要的。布线部分未演示。冲浪plunk进一步实施
服务.ts
import {Component, Injectable,Input,Output,EventEmitter} from 'angular2/core'
import {Router} from 'angular2/router';
import {Http} from 'angular2/http';
export interface Info {
name:string;
}
@Injectable()
export class NameService {
constructor(http:Http;router:Router)
{
this.http=http;
// you can call server resource from here and store it down to any variable.
}
info: Info = { name : "Jack" };
change(){
this.info.name = "Jane"; // this.info is shared among components.
}
}
冈特在共享服务方面是完全正确的!
下面是一个HTTP的更多细节,它依赖于观察值和缓存数据来进行下一次调用:
export class SharedService {
constructor(private http:Http) {
}
getData() {
if (this.cachedData) {
return Observable.of(this.cachedData);
} else {
return this.http.get(...)
.map(res => res.json())
.do((data) => {
this.cachedData = data;
});
}
}
}
我可能遗漏了一些非常明显的东西,但我想做的是在组件之间异步共享从服务器获取的数据。 我的服务看起来是这样的: 因为流程是异步的,所以我需要promise响应,但是promise的响应返回实际的subscribe对象,而不是返回的< code>data.json。 这是一个配置文件页面,它由嵌套路由组成,所以我不能将数据传递给路由组件。路由组件之一是帖子,加载配置文件后,它应该开始获取服务中当前用户
我正在使用angular2开发一个应用程序。我有一个场景,需要在路由时(使用router.navigate())将复杂的数据(对象数组)从一个组件传递到另一个组件(它们不是父子关系,而是两个独立的组件)。我在谷歌上搜索过,大多数结果描述了父子组件的场景。我浏览了结果,找到了这些传递数据的方法。 1)创建共享服务2)通过路由参数 第二种方法适合我(尽管我不喜欢上面解释的复杂数据)。我无法使用共享服务
有没有人知道Docker中容器之间共享数据库的最佳实践是什么? 我的意思是我想在Docker中创建多个容器。然后,这些容器将以相同的身份在相同的数据库上执行CRUD。 到目前为止,我有两个想法。一种是创建一个单独的容器来运行数据库。另一种方法是直接在安装Docker的主机上安装数据库。
分包 建议将服务接口、服务模型、服务异常等均放在 API 包中,因为服务模型和异常也是 API 的一部分,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP)。 如果需要,也可以考虑在 API 包中放置一份 Spring 的引用配置,这样使用方只需在 Spring 加载过程中引用此配置即可。配置建议放在模块的包目录下,以免冲突,如:com/alibaba/china/xxx/d
服务开发最佳实践 一、服务 二、版本 三、API 1、非托管API 2、托管API 服务开发最佳实践 更新时间:2018-03-20 21:45:44 服务开发的流程从创建服务开始,每一个服务下可以创建多个版本,每一个版本下可以创建多个API。 一、服务 我们建议为每个服务取一个有意义的名字,同时为该服务打上标签。每一个服务最终将是一组API的集合,这些API具有某些共性,存在于一个服务之下。比如
我想使用AWS S3和Lambda实现以下场景。 用户从手机上拍照,添加描述、位置和更多属性作为单独的元数据。将图像文件上传到S3,元数据作为文件内部元数据。根据这个链接,我可以通过将“x-amz-meta”作为键添加到ObjectMetadata中来实现。 每次在S3存储桶中创建文件时,我都会设法调用lambda,但在S3Event中,从lambda的调用方法中,我无法获得放入ObjectMet