anglejs – 角度2通过服务构造函数的参数

前端之家收集整理的这篇文章主要介绍了anglejs – 角度2通过服务构造函数的参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们假设我有这个Angular 2服务:
@Injectable()
class Demo {
    constructor(private instanceSpecificString: string) {
    }
}

请注意,它的构造函数接受一个特定于实例的字符串.我的意思是我想多次实例化这个服务,每次实例化时,我想根据服务被实例化的上下文传递一个不同的字符串.

我怎么做?

附:使用字符串作为示例,但该参数可以容易地是类型号,或布尔型甚至某种配置对象.

传递给您的服务的值将由实例化的注射器决定.您可能可以在其中一个组件定义中执行此操作:
@Component({
    ...
    providers: [
        provide(string,{useValue: "someSpecificValue"})
    ]
})

但是,这是一个问题,您正在为字符串令牌定义提供程序,并可能导致可维护性问题.

为您的服务定义一些配置模型可能是更好的模式:

class DemoConfig {
    instanceSpecificString: string;
}

然后,您可以创建一个传递给您的服务的实例.

let config = { instanceSpecificString: "someSpecificValue" }

@Component({
    ...
    providers: [
        provide(DemoConfig,{useExisting: config})
    ]
})

希望这是有帮助的.我没有尝试过这个;我在应用程序中使用的服务是单身人士.这是我使用的参考:

https://angular.io/docs/ts/latest/api/core/index/provide-function.html

猜你在找的Angularjs相关文章