тег title и метатеги не отображаются на стороне сервера рендеринга в угловых 4 для ленивых модулей загрузки - PullRequest
0 голосов
/ 28 августа 2018

в предыдущей версии моего приложения, всех компонентов и модулей и объявлять маршруты, импортированные в

app.module.ts

declarations: [
  AppComponent,
  NavbarComponent
  FooterComponent,
  HomeComponent,
  NotFoundComponent
  ....
],
imports: [
  BrowserModule.withServerTransition({appId: 'my-app'}),
  ServerStateTransferModule.forRoot(),
  RouterModule.forRoot([
   {
    path: 'home',
    component: HomeComponent
   },
   {
    path: 'other',
    component: OtherComponents
   },
   ....
  ])
  ....
]

но в новой версии приложения я использую LazyLoadModule, я имею в виду отделение всех модулей от app.module.ts и использование других модулей для страниц, таких как home.module.ts и HomeModule, импортированных в modules.ts. (объясняется следующее)

app.module.ts

declarations: [
  AppComponent
],
imports: [
  NavbarModule,
  FooterModule,
  BrowserModule.withServerTransition({appId: 'my-app'}),
  ServerStateTransferModule.forRoot(),
  RouterModule.forRoot([
   {
     path        : '',
     loadChildren: 'app/modules#Modules'
   },
   {
     path      : '**',
     redirectTo: '/404'
   }
  ], {
   useHash: false
  })
]

в modules.ts я импортирую любые страницы модулей

module.ts

@NgModule({
  imports: [
    HomeModule,
    NotFoundModule,
    SearchModule,
    ....
  ]
})
export class Modules {
}

app.server.module.ts этот файл был написан на сайте https://angular.io/guide/universal

app.server.module.ts

imports  : [
 AppModule,
 ServerModule,
 ModuleMapLoaderModule
],

например, в home.component.ts я установил заголовок:

home.component.ts

@Component({
  selector   : 'app-home',
  templateUrl: './home.component.html',
  styleUrls  : [ './home.component.css' ]
})

export class HomeComponent implement OnInit {

  constructor (private title: Title){
    this.setPageHeader();
  }

  ngOnInit() {}

  setPageHeader () {
   this.meta.addTags([
    {
      name   : 'title',
      content: this.homeService.homepage_title
    },
    {
      name   : 'keywords',
      content: this.homeService.homepage_keywords
    },
    {
      name   : 'description',
      content: this.homeService.homepage_description
    }
   ]);
   this.title.setTitle(this.homeService.homepage_title);
  }
}

эта версия успешно скомпилирована, но проблема в том, что тег title и теги met не отображаются при просмотре исходной страницы

Каково решение этой проблемы?

...