简体   繁体   English

当我在Angular2 provider()别名中使用'Token'时,Typescript编译器会给出'Unresolved variable or type'

[英]Typescript compiler gives 'Unresolved variable or type' when I use a 'Token' in Angular2 provider() aliasing

Typscript can't seem to handle a 'Token' as used in a Angular2 provide() aliasing function. Typscript似乎无法处理Angular2 provide()别名函数中使用的“令牌”。 I'm wondering if there is a setting in the typescript compiler to fix that, or if I am stuck using a string type alias instead. 我想知道在typescript编译器中是否有一个设置可以解决这个问题,或者我是否因使用字符串类型别名而陷入困境。

An example, as it would appear in main.ts bootstrapping function is as follows: 一个例子,就像它在main.ts bootstrapping函数中出现的那样如下:

bootstrap(AppComponent, [ROUTER_PROVIDERS, provide(**alias_token**, Child1aComponent)]);

Typescript (in webstorm, btw) reports an 'Unresolved variable or type alias_token' error. Typescript(在webstorm,btw中)报告“未解析的变量或类型alias_token”错误。

There is an alternate 'provide' function that takes a string as param 1, but I'd prefer to use the Token version if possible. 有一个替代'provide'函数,它将字符串作为参数1,但如果可能的话,我更愿意使用Token版本。

Any ideas on this? 有什么想法吗?

**alias_token** needs to be a valid type (that actually exists and is imported) or alternatively a string or an OpaqueToken **alias_token**需要是有效类型(实际存在并导入)或者字符串或OpaqueToken

Some examples 一些例子

class AliasToken {}

bootstrap(AppComponent, [ROUTER_PROVIDERS, provide(AliasToken, {useClass  Child1aComponent})]);
...
constructor(private alias:AliasToken);
bootstrap(AppComponent, [ROUTER_PROVIDERS, provide('alias_token', {useClass: Child1aComponent})]);
...
constructor(@Inject('alias_token') private alias:AliasToken);
var alias_token = new OpaqueToken("alias");
bootstrap(AppComponent, [ROUTER_PROVIDERS, provide(alias_token, {useClass: Child1aComponent})]);
...
constructor(@Inject(alias_token) private alias:AliasToken);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM