使用另一个InjectionToken提供InjectionToken

时间:2017-04-10 15:22:02

标签: angular

我不明白为什么以下情况不起作用。如果我使用文字字符串来分配APP_BASE_HREF,它可以正常工作。

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吗?

1 个答案:

答案 0 :(得分:1)

据我记得,这应该做你想做的事情

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