Компоненты Angular 2 не отображаются правильно при использовании с розеткой маршрутизатора

Я занимаюсь разработкой простого сайта Angular 2, использующего Angular 2 Lazy Routing. Я использую ползунок flickity для реализации ползунка на домашней странице, проблема заключается в следующем: когда я объявляю компонент ползунка в компоненте приложения (корневой компонент)

app.component

<app-topnav></app-topnav>
<app-navbar></app-navbar>
<app-home-slider></app-home-slider>  <------- the slider component !
<router-outlet></router-outlet>
<hr class="divider">
<app-footer></app-footer>

слайдер рендерится без проблем, но когда я объявляю компонент слайдера в компоненте домашней страницы, который вызывается в router-outlet с использованием отложенной загрузки, изображения есть, но слайдер не работает,

дом-page.component

<app-home-slider></app-home-slider>  <------- the slider component !
<app-plaques></app-plaques>

app.routing.ts

import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
  { path: 'Accueil-*', loadChildren: './Pages/home-page/home-page.module#HomePageModule' },
  { path: 'A-propos-*', loadChildren: './Pages/about-page/about-page.module#AboutPageModule' },
  { path: 'Contact-*', loadChildren: './Pages/contact-page/contact-page.module#ContactPageModule' },
  { path: 'Maladies-*', loadChildren: './Pages/diseases-page/diseases-page.module#DiseasesPageModule' },
  { path: 'Pharmacie-*', loadChildren: './Pages/drugs-page/drugs-page.module#DrugsPageModule' },
  { path: 'Laboratoire-*', loadChildren: './Pages/laboratory-page/laboratory-page.module#LaboratoryPageModule' },
  { path: 'Paiements-assurances-*', loadChildren: './Pages/payments-page/payments-page.module#PaymentsPageModule' },
  { path: 'Formules-sante-*', loadChildren: './Pages/products-page/products-page.module#ProductsPageModule' },
  { path: 'Symptomes-signes-*', loadChildren: './Pages/symptomes-page/symptomes-page.module#SymptomesPageModule' },
  { path: 'Rendez-vous-*', loadChildren: './Pages/appointments-page/appointments-page.module#AppointmentsPageModule' },
  { path: 'Docteurs-*', loadChildren: './Pages/symptomes-page/symptomes-page.module#SymptomesPageModule' },
  { path: 'Blog-*', loadChildren: './Pages/blog-page/blog-page.module#BlogPageModule' },

];

export const AppRoutes = RouterModule.forRoot(routes);

2 ответа

Прочитав документацию Flickity много раз, я понял: при использовании WebPack мы должны добавить

var Flickity = require('flickity');

На самом деле это не фактический ответ, чтобы решить эту проблему, я просто изменил en encapsulation на none, вы можете сделать это в Компоненте следующим образом:

@Component({
  selector: 'my-random',
  templateUrl: 'my-random.component.html',
  encapsulation: ViewEncapsulation.None <---------- ADD THIS
})

Вы можете прочитать больше об инкапсуляции в документации

Другие вопросы по тегам