我正在将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';


否则,您将必须创建服务的新实例,但这会违反单例的目的。

最好的办法就是告诉我们您要达到的目标,以便我们为您找到最佳的解决方案。

10-05 20:54
查看更多