我有自定义服务类:
@Injectable()
export class CustomService {
constructor(num: number) {
}
}
此类注入组件的构造函数中,如下所示:
constructor(private cs: CustomService) {
}
但是如何将参数num
传递给上述构造函数中的服务?
这样的事情:
constructor(private cs: CustomService(1)) {
}
我知道作为解决方案我可以使用Fabric模式,但是只有一种方法可以做到吗?
答案 0 :(得分:1)
如果CustomService
实例不应该是注射器单例,那么它是:
providers: [{ provide: CustomService, useValue: CustomService }]
...
private cs;
constructor(@Inject(CustomService) private CustomService: typeof CustomService) {
this.cs = new CustomService(1);
}
如果应该记住CustomService
以返回单个参数的单例,则应通过其他缓存服务检索实例:
class CustomServiceStorage {
private storage = new Map();
constructor(@Inject(CustomService) private CustomService: typeof CustomService) {}
get(num) {
if (!this.storage.has(num))
this.storage.set(num, new this.CustomService(num));
return this.storage.get(num);
}
}
答案 1 :(得分:0)
服务可以保存数据。您可以在服务中定义公共属性并设置该数据。
以下是一个例子:
import { Injectable } from '@angular/core';
@Injectable()
export class DataService {
serviceData: string;
}
但如果您正在配置该服务,Jon对您的问题的评论可能是更好的解决方案。