Angular 4-如何将模块导入子模块?

时间:2018-11-02 14:37:04

标签: angular

我在Angular应用程序中使用ngx-translate。我导入并完成了app.module.ts中的所有操作:

import {HttpClientModule, HttpClient} from '@angular/common/http';
import {TranslateModule, TranslateLoader} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';

export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http, '/assets/i18n/', '.json');
 }

@NgModule({
imports: [
    BrowserModule,
    HttpClientModule,
    TranslateModule.forRoot({
        loader: {
            provide: TranslateLoader,
            useFactory: HttpLoaderFactory,
            deps: [HttpClient]
        }
    })
],
bootstrap: [AppComponent]

@NgModule({
imports: [
    BrowserModule,
    HttpClientModule,
    TranslateModule.forRoot({
        loader: {
            provide: TranslateLoader,
            useFactory: HttpLoaderFactory,
            deps: [HttpClient]
        }
    })
],
bootstrap: [AppComponent]

我正在导入和导出模块,例如github ngx-translate页面上的示例。翻译器工作正常。

但是我有一个子文件夹,该子文件夹有自己的module.ts文件pages.module.ts。当我想在页面文件夹中的html文件上使用ngx-translate时,我有信息,该应用程序无法识别该翻译管道。我想我需要将元素从app.module.ts导入pages.module.ts。我尝试过,但是我不知道该怎么做。

2 个答案:

答案 0 :(得分:4)

您很有可能必须在子模块TranslateModule.forChild中使用TranslateModule.forRoot(而不是pages.module.ts)。

答案 1 :(得分:1)

创建一个共享模块文件(shared.module.ts)

import {HttpClient} from '@angular/common/http';
import {TranslateModule, TranslateLoader} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';

export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http, '/assets/i18n/', '.json');
 }

@NgModule({
imports: [
TranslateModule.forRoot({
    loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [HttpClient]
    }
})
], export: [TranslateModule]

然后将共享模块导入要在其中使用翻译服务的任何其他模块。