gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:05:16 24 4
gpt4 key购买 nike

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

NoProviderError {message: "No provider for String! (App -> String)", stack: "Error: DI Exception↵ 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'
}
}

最佳答案

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

stringnumberbooleanObject 等基本类型不能用作键。如果您想使用此类“通用”类型,您需要一个人工 key 。 DI 支持字符串或 OpaqueToken作为类型之外的键。对于此类人工 key ,您需要使用 @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'
}
}

关于typescript - 如何从 angular2 的构造函数传递字符串参数或数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36412202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com