Javascript Typescript和导出的函数语法
我在阅读ngx translate文档时发现了这段代码(这些代码解释了使项目Aot兼容的正确方法) 首先Javascript Typescript和导出的函数语法,javascript,angular,typescript,Javascript,Angular,Typescript,我在阅读ngx translate文档时发现了这段代码(这些代码解释了使项目Aot兼容的正确方法) 首先 export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); } @NgModule({ imports: [ BrowserModule, HttpClien
export function createTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
imports: [
BrowserModule,
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [HttpClient]
}
})
],...
秒
// AoT requires an exported function for factories
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}
@NgModule({
imports: [
BrowserModule,
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
],...
我的问题是:将传递给useFactory
的函数名用括号括起来与普通传递有什么区别
谢谢我相信您被文档中示例中的一个怪癖误导了 非AOT版本可以是: 并且AOT版本必须具有导出的函数
export function yourFunction(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
imports: [
BrowserModule,
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: yourFunction,
deps: [HttpClient]
}
})
],...
换言之:
如果要在使用AoT编译或Ionic时配置自定义TranslateLoader,则必须使用导出函数而不是内联函数
这些方法之间没有区别。两者都是AOT兼容的,但是:useFactory:functionName和useFactory:(functionName)之间有什么区别??谢谢!区别在于括号。或者我还应该说什么?有。没有。区别。阅读下面的答案,你就能理解我的问题。这个答案没有回答你的问题。它没有说明括号和无之间的区别。我删除的答案完全相同。
export function yourFunction(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
imports: [
BrowserModule,
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: yourFunction,
deps: [HttpClient]
}
})
],...