我有一个问题,我想重写我的应用程序代码并将主模块更改为 main.ts 中指向的主根独立组件。
一切正常,但我对 HttpClientModule 有问题。我在 root 中提供的一项服务中使用 HttpClient。在 MainComponent 中,我将 HttpClientModules 添加到导入数组中,但随后出现错误,表示我没有向应用程序提供 HttpClientMoudle,并且此服务无法使用它。
Uncaught (in promise): NullInjectorError: R3InjectorError(Standalone[MainComponent])[MainService -> MainService -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
Run Code Online (Sandbox Code Playgroud)
当我将此 HttpClientModule 添加到 AppRoutingModule 时,我也将其添加到 main.ts 中
bootstrapApplication(MainComponent, {
providers: [importProvidersFrom(RoutingModule)],
});
Run Code Online (Sandbox Code Playgroud)
效果很好,服务没有任何问题。
这是包含此问题的基本示例的代码,有人可以解释为什么导入到根独立组件在这种情况下不起作用,但导入到 RoutngModule 可以解决问题吗?
我想将我的应用程序放在http://example.com/my_dir路径中,首先我必须向我的构建命令添加一个 option build --prod --base-href=/my_dir/。一切正常,但我只遇到翻译文件的问题。通常我将它们保存在 assets/i18n/ 目录中,如何将此文件的请求路径更改为 /my_dir/assetes/i18n ?
我使用 Angular 8 和 TranslateModule
这是我在 app.module.ts 中的配置
import {TranslateModule, TranslateLoader} from "@ngx-translate/core";
import {TranslateHttpLoader} from "@ngx-translate/http-loader";
// AoT requires an exported function for factories
export function HttpLoaderFactory(httpClient: HttpClient) {
return new TranslateHttpLoader(httpClient);
}
imports: [
...,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
]
Run Code Online (Sandbox Code Playgroud)
已解决 我在此处添加了 TranslateHttpLoader(httpClient)
// AoT requires an exported function for factories
export function HttpLoaderFactory(httpClient: HttpClient) {
return new TranslateHttpLoader(httpClient); …Run Code Online (Sandbox Code Playgroud)