我正在将Typescript类更改为Angular 6服务:
export class TestClass {
customParam1;
customParam2;
constructor(customParam1, custom1Param2) {
this.customParam1 = customParam1;
this.customParam2 = customParam2;
}
}
到服务:
@Injectable({
providedIn: 'root'
})
export class TestClassService {
customParam1;
customParam2;
constructor(customParam1, custom1Param2) {
this.customParam1 = customParam1;
this.customParam2 = customParam2;
}
}
在Angular中创建第一个代码块时,请调用new TestClass(“ one”,“ two”)。
在组件中,如何在创建服务时设置customParam1和customParam2?
最佳答案
万一你不知道
constructor(customParam1, custom1Param2) {
this.customParam1 = customParam1;
this.customParam2 = customParam2;
}
是长版
constructor(private customParam1, private custom1Param2) {}
现在,您要提出的问题是:由于您是在根级别提供服务,因此会产生单例情况:因为服务是其他功能(例如组件)的依赖项,因此将首先加载它们(否则将转发其实例,但是最后目标是相同的)。
如果要在服务中设置值,则必须使用设置器:函数或实际设置器。
setCustomParam1(value) { this.customParam1 = value; }
set setCustomParam2(value) { this.customParam2 = value; }
this.setCustomParam1('your value');
this.setCustomParam2 = 'your value';
否则,您将必须创建服务的新实例,但这会违反单例的目的。
最好的办法就是告诉我们您要达到的目标,以便我们为您找到最佳的解决方案。