Как использовать materialize-css с угловым
я создал angular4 С угловой-cli. Я хочу материализовать-css@next библиотека. Поэтому я установил его с помощью
npm install materialize-css@next --save
так это установлено
"materialize-css": "^1.0.0-alpha.2",
затем в угловом-cli.json я добавил ссылку на файл css и js
"styles": [
"styles.css",
"../node_modules/materialize-css/dist/css/materialize.css"
],
"scripts": [
"../node_modules/materialize-css/dist/js/materialize.js"
],
теперь это работает нормально для нормальных компонентов, таких как кнопка и панель навигации, поскольку эти компоненты не нуждаются в js.
как я могу создать динамические элементы, такие как карусель, складные и другие компоненты, в которых есть требование для js?
как я погуглил, есть библиотеки обертки, такие как angualr2-материализоваться
поэтому я установил это
npm install angular2-materialize --save
и импортировал модуль в my app.модуль.ТС
import { MaterializeModule } from 'angular2-materialize';
и затем в imports
массив @NgModule
imports: [
BrowserModule,
MaterializeModule
],
и когда Я использую следующую разметку
<a class="waves-effect waves-light btn modal-trigger" (click)="openModal()">Modal</a>
<div id="modal1" class="modal bottom-sheet" materialize="modal" [materializeParams]="[{dismissible: false}]" [materializeActions]="modalActions">
<div class="modal-content">
<h4>Modal Header</h4>
<p>A bunch of text</p>
</div>
<div class="modal-footer">
<a class="waves-effect waves-green btn-flat" (click)="closeModal()">Close</a>
<a class="modal-action modal-close waves-effect waves-green btn-flat">Agree</a>
</div>
</div>
это показывает
index.js:4 Uncaught Error: Couldn't find Materialize object on window. It is created by the materialize-css library. Please import materialize-css before importing angular2-materialize.
at Object.../../../../angular2-materialize/dist/index.js (index.js:4)
at __webpack_require__ (bootstrap f20633ecefcae2ee4f21:54)
at Object.../../../../../src/app/app.module.ts (app.component.ts:9)
at __webpack_require__ (bootstrap f20633ecefcae2ee4f21:54)
at Object.../../../../../src/main.ts (environment.ts:8)
at __webpack_require__ (bootstrap f20633ecefcae2ee4f21:54)
at Object.3 (main.ts:11)
at __webpack_require__ (bootstrap f20633ecefcae2ee4f21:54)
at webpackJsonpCallback (bootstrap f20633ecefcae2ee4f21:25)
at main.bundle.js:1
Я что-то пропустила?
есть ли способ использовать библиотеку MaterializeCSS без использования оберток?
2 ответов
angular2-materialize
на основе materialize-css 0.X
. As materialize-css 1.X
не имеет зависимости от jQuery
. Даже я не нашел никакой обертки над этим, и я не хочу использовать модули обертки. Так я решил эту проблему, выполнив следующие действия.
1) Ссылка JS и CSS в угловой-cli.в JSON
"styles": [
"styles.css",
"../node_modules/materialize-css/dist/css/materialize.css"
],
"scripts": [
"../node_modules/hammerjs/hammer.js",
"../node_modules/materialize-css/dist/js/materialize.js"
]
hammerjs
требуется для некоторых компонентов для прослушивания скользящих событий.
2) импорт в ts
import * as M from "materialize-css/dist/js/materialize";
3) получить элемент Ссылка
@ViewChild('collapsible') elCollapsible: ElementRef;
4) оберните элемент
ngAfterViewInit() {
let instanceCollapsible = new M.Collapsible(this.elCollapsible.nativeElement, {});
}
и сделал.
angular2-материализовать, вероятно, использует материализовать 0.x, который использует Materialize
пространство имен. материализовать-следующий switchted к M
пространство имен.
angular2-материализоваться уже должно включать материализоваться (0.икс.)