首页 文章

为什么“(SystemJS)无法解析所有参数”发生在Angular2中

提问于
浏览
1

所有:

我是Angular2的新手,当我尝试构建一个简单的计数器服务时:

从@ @ angular / core导入;

@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)无法解析Counter:(?)的所有参数 .

My question is

这是因为Angular2会将构造函数参数列表中的所有内容都视为依赖注入,是否允许设置其他类型的参数,或者还有其他原因导致此错误?我必须使用 reset() 来达到同样的目的吗?

它是否正确?

谢谢

1 回答

  • 2

    “这是因为Angular2会将构造函数参数列表中的所有内容都视为依赖注入”

    是 .

    尽管如此,你可以做的是使用 @Optional . 但这一点毫无意义 . 什么时候你会提供 Value ?所以它永远是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) {}
    

相关问题