全部:
我对Angular2很陌生,当我尝试构建一个简单的计数服务时,比如:
从“@角/核”导入{可注入};
@Injectable()
export class Counter {
count = 0;
constructor(start = 0){
this.count = start;
// this.reset();
}
reset(start=0){
this.count = start;
}
inc(){
this.count++;
}
dec(){
this.count--;
}
show(){
return this.count;
}
}
我试图在构造函数中做的是设置一个默认的init参数start
将计数默认为0,但我得到的错误如下:
(SystemJS)无法解析计数器的所有参数:(?)。
我的问题是:
这是因为Angular2将构造函数参数列表中的所有内容视为依赖注入,没有其他类型的参数允许设置在那里还是有其他原因导致此错误?我必须使用重置()
来实现相同的目的?
这是否正确?
谢啦
"这是因为Angular2将构造函数参数列表中的所有内容视为依赖注入吗?"
是的。
要做到这一点,您可以使用@可选
。但这是毫无意义的,仅此而已。你什么时候会提供值?所以它总是0。毫无意义。
如果要为注入提供任意值,可以使用@Inject
并使用令牌配置值。例如
import { OpaqueToken, NgModule } from '@angular/core';
export const START = new OpaqueToken("some.token");
@NgModule({
providers: [
{ provide: START, useValue: 100 }
]
})
export class AppModule {}
现在你可以注入它并使其成为可选的
import { Inject, Optional } from '@angular/core';
import { START } from './app.module';
constructor(@Optional @Inject(START) start = 0) {}