Как запустить материализацию sidenav в проекте Angular 5?

У меня угловой проект. Включена материализация css и js с использованием cdn. Невозможно запустить sidenav с помощью тега script в index.html, поскольку панель навигации является одним из компонентов в моем проекте. Итак, как лучше всего включить материализацию css в угловые проекты (для производства) и как инициализировать компоненты materlize, такие как sidenav, Carousel и т. д.

  var elem = document.querySelector('.sidenav');
  var instance = M.Sidenav.init(elem, options);

Приведенный выше код используется для инициализации боковой навигации при использовании JavaScript.

Вы можете быть более конкретными? Что ты пробовал? Что пошло не так?

bugs 13.04.2018 09:56

Не могли бы вы дать больше подробностей, например код или что-то в этом роде?

Deepak Mani 13.04.2018 09:58

Добавлен код, который используется в JavaScript

Manjunath Shenoy 13.04.2018 10:03
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
3
2 525
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я действительно рекомендую вам использовать официальный пакет Angular Material, чтобы использовать материальный дизайн в вашем проекте Angular5. Он имеет отличную интеграцию с angular, и вам не нужна установка javascript в вашем index.html.

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

Что касается вашего вопроса, с Angular Material вы можете получить рабочий сайдинг с помощью этого:

<mat-sidenav-container class = "example-container">
  <mat-sidenav mode = "side" opened>Sidenav content</mat-sidenav>
  <mat-sidenav-content>Main content</mat-sidenav-content>
</mat-sidenav-container>

Просто не забудьте правильно импортировать модуль sidenav в ваш app.module.ts.

Если вы хотите использовать библиотеку материализации в проекте angular 5, я настоятельно рекомендую вам взглянуть на angular2-материализовать, а не просто импортировать JS и CSS из CDN.

Вы просто импортируете модуль в свой app.module и получаете доступ ко всем материализованным элементам.

Ответ принят как подходящий

Вы можете использовать «AfterViewInit» angular для инициализации элементов. В вашем ts-файле реализуйте AfterViewInit и переопределите метод ngAfterViewInit (). Затем напишите свой код инициализации внутри функции setTimeout () внутри ngAfterViewInit ().

export class NameComponent implements OnInit, AfterViewInit {
  ....

  ngAfterViewInit(): void {
    setTimeout( function() {
      var elem = document.querySelector('.sidenav');
      var instance = M.Sidenav.init(elem, options);
    }, 0)
  }

  .....

}

Кроме того, если вы получаете следующую ошибку: Cannot find name 'M'. добавьте declare const M; под ваш импорт

Darryl Mendonez 26.11.2019 19:55

Спасибо @DarrylMendonez за упоминание об этом. Но я импортирую материализацию, чтобы ею воспользоваться. - import * as M from 'materialize-css'

Chetan Oswal 28.11.2019 08:03

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