如何从angular2中的构造函数传递字符串参数或数字

时间:2016-04-04 20:21:47

标签: typescript angular

在angular2 for typescript中,我需要在构造函数中传递字符串参数或偶数参数,如下所示: 构造函数(_para:string){} 但生成错误,调试器一直告诉我:

  

NoProviderError {message:"没有String的提供者! (App - > String)",   stack:"错误:DI异常↵at   NoProviderError.BaseExc ... ularjs.org / 2.0.0-beta.8 / angular2.dev.js:11284:19)"

如果我删除_para:string,它将起作用.... 这是在plnkr中的Demoe:

http://plnkr.co/edit/t7serY3L6LtvzYc5xHtL?p=preview

and here is the code : 
//our root app component
import {Component} from 'angular2/core'

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div>
      <h2>Hello {{name}}</h2>


    </div>
  `,
  directives: []
})
export class App {
  constructor(_para:string) {

    this.name = 'Angular2'
  }
}

1 个答案:

答案 0 :(得分:3)

对于由Angulars依赖注入(DI)创建的组件,它尝试查找提供程序并使用构造函数参数的类型作为键来查找它。

stringnumberbooleanObject等原始类型不作为键。如果你想使用这样的&#34;泛型&#34;类型你需要一个人工钥匙。除了类型之外,DI还支持字符串或OpaqueToken作为键。对于此类人工键,您需要使用@Inject()装饰器。

bootstrap(MyApp, [provide('para': {useValue: 'Hello World!'})]);

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div>
      <h2>Hello {{name}}</h2>


    </div>
  `,
  directives: []
})
export class App {
  constructor(@Injet('para') _para:string) {

    this.name = 'Angular2'
  }
}