我不明白为什么以下情况不起作用。如果我使用文字字符串来分配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吗?
答案 0 :(得分:1)
据我记得,这应该做你想做的事情
providers: [{ provide: APP_BASE_HREF, useFactory: (url) => url, deps: [MY_BASE_HREF]}],