2017-04-10 68 views
1

我不明白爲什麼以下不起作用。如果我使用文字字符串來分配APP_BASE_HREF,它可以正常工作。使用另一個InjectionToken提供InjectionToken

main.ts

export function main(baseHref: string) { 
    platformBrowserDynamic([ 
     { provide: MY_BASE_HREF, useValue: baseHref }, 
    ]).bootstrapModule(AppModule); 
} 

app.module.ts

export const MY_BASE_HREF = new InjectionToken<string>('BaseHref') 

@NgModule({ 
... 
providers: [{ provide: APP_BASE_HREF, useValue: MY_BASE_HREF }], 
... 
}) 

這裏是控制檯錯誤

Unhandled Promise rejection: url.replace is not a function ; Zone: <root> ; Task: Promise.then ; Value: TypeError: url.replace is not a function at _stripIndexHtml (node_modules/@angular/common/bundles/common.umd.js:439) at new Location (node_modules/@angular/common/bundles/common.umd.js:278)

的重要組成部分

我不能使用InjectionToken來定義另一個InjectionToken嗎?

+0

什麼是你的問題的是什麼? –

回答

1

至於我記得這應該做你想要

providers: [{ provide: APP_BASE_HREF, useFactory: (url) => url, deps: [MY_BASE_HREF]}], 
+0

我正在使用InjectionToken,而不是OpaqueToken。我認爲其中一個優點是不必調用'new Inject()'... – gravidThoughts

+0

你從哪裏得到這些信息?你嘗試過,如果它的作品? –

+0

我從[Thistram]的這篇文章中獲得了它(https://blog.thoughtram.io/angular/2016/05/23/opaque-tokens-in-angular-2.html#injectiontoken-since-angular-4x) 。不,它不工作,在JavaScript控制檯中產生相同的錯誤。 – gravidThoughts

相關問題