给定一个如下定义的multiinjectable,没有任何提供程序,我希望注入列表为空,但实际上它是null。
如果没有可注入的提供程序,有没有办法将值注入为[]
而不是null
?我不能覆盖构造函数中的值,因为构造函数中的代码在字段初始化器之后运行,所以在我纠正值之前错误就发生了。
const MY_INTERCEPTORS: InjectionToken<MyInterceptor> = new InjectionToken('MyInterceptors');
@Injectable()
export class MyService {
constructor(
@Optional() @Inject(MY_INTERCEPTORS) private readonly interceptors: MyInterceptor[]
) {
super();
}
public myField$(input: Foo) = this.interceptors.reduce((agg, e) => e.intercept(agg), input); // Expect this.interceptors to be [], but is null
}
1条答案
按热度按时间vatpfxk51#
您可以为您的InjectionToken提供一个工厂。它将用作默认值
顺便说一下,InjectionToken的类型应该是array