假设我们有一个@Injectable
类,如下所示:
interface IServiceConfig {
boo: string;
foo: string;
}
@Injectable()
class Service {
boo: string = "boo";
foo: string = "foo";
constructor(IServiceConfig isc) {
Object.assign(this, isc);
}
}
是否可以将IServiceConfig
实例传递给Service
的构造函数,同时仍允许Angular创建并注入Service
实例?
在Angular创建实例之前,是否有不同的方法来配置服务?
答案 0 :(得分:1)
这是未经测试的,但您应该可以这样做:
import { Injectable, Inject, Optional } from '@angular/core';
interface IServiceConfig {
boo: string;
foo: string;
}
@Injectable()
class Service {
boo: string = "boo";
foo: string = "foo";
constructor(@Inject('isc') @Optional() public isc?: IServiceConfig ) {
Object.assign(this, isc);
}
}
在您的提供商中(例如在app.module中):
providers: [
{provide: 'isc', useValue: {boo: 'hoo', foo: 'bar'},
...