2016-05-07 4 views
1

Typescript kann nicht mit einem "Token" wie in einer Angular2 provide() Aliasing-Funktion behandelt werden. Ich frage mich, ob es eine Einstellung im Typskript-Compiler gibt, um das zu beheben, oder wenn ich festhalte, stattdessen einen String-Typ-Alias ​​zu verwenden.Typescript-Compiler gibt "Ungelöste Variable oder Typ", wenn ich ein Token in Angular2 Provider() Aliasing verwenden

Ein Beispiel, wie es in main.ts Bootstrapping-Funktion erscheinen würde, ist wie folgt:

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

Maschinenschrift (in WebStorm, btw) meldet einen 'Ungelöste variable oder Typ alias_token' Fehler.

Es gibt eine alternative 'provide' -Funktion, die eine Zeichenfolge als Parameter 1 verwendet, aber ich würde lieber die Token-Version verwenden, wenn möglich.

Irgendwelche Ideen dazu?

Antwort

0

**alias_token** Bedürfnisse gültiger Typ sein (das tatsächlich existiert und importiert wird) oder alternativ einen String oder ein OpaqueToken

Einige Beispiele

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); 
+0

Opaque Token = perfekt. Danke für die Hilfe. –