已經創建了一個帶有角度cli的角度4項目。在angular-cli.json文件中導入css和js。Angular4:jQuery和angular2-materialize在路由導航後不工作
"styles": [
"../node_modules/materialize-css/dist/css/materialize.css",
"styles.css"
],
"scripts": [
"../node_modules/jquery/dist/jquery.js",
"../node_modules/hammerjs/hammer.js",
"../node_modules/materialize-css/dist/js/materialize.js",
"../src/assets/js/init.js"
],
init.js具有低於功能
(function($) {
$(function() {
$('.slider').slider();
$('.button-collapse').sideNav();
$('.carousel').carousel();
// $('.carousel.carousel-slider').carousel({fullWidth: true});
$('.carousel').carousel({
dist: 0,
shift: 0,
padding: 20,
});
}); // end of document ready
})(jQuery);
在app.module.ts進口MaterializeModule 進口{MaterializeModule}從 'angular2-Materialise的';
當我們第一次登陸頁面或刷新頁面時,滑塊會按預期工作。
問題:當我們使用路由器鏈接進行導航時,頁面正確導航但javascript函數沒有被調用。
從主頁路由<a routerLink="/blog/abc-1">Blog</a>
我想:'blog.component.ts
import { Component, OnInit } from '@angular/core';
import { MaterializeModule } from 'angular2-materialize';
import * as $ from 'jquery';
import * as Materialize from 'materialize-css';
declare let Materialize : any;
@Component({
selector: 'app-blog',
templateUrl: './blog.component.html',
styleUrls: ['./blog.component.css']
})
export class BlogComponent implements OnInit {
constructor() { }
ngOnInit() {
Materialize('.slider').slider();
}
}
` 錯誤: 收到錯誤: 錯誤類型錯誤:a.addEventListener不是一個函數
at http://localhost:4200/vendor.bundle.js:15611:765
at Array.forEach (native)
你能否提供更多細節,萌芽?我試着做'Materialize('。button-dropdown')',但我得到了「Materialize不是函數」的錯誤。我嘗試過'$('。button-dropdown')。dropdown(); ',但我仍然看到同樣的問題 - 下拉菜單在兩頁(隨機)上工作,但在第三頁上不起作用。 這確實幫助我解決了我在'ngAfterViewChecked'中用'Materialize.updateTextFields()'得到的錯誤。我在新的頁面加載時出錯;把它包裝在一個準備好的文件中。 – Will
這個答案真的很有幫助。我的問題現在解決了。謝謝很多.......... –