angular-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 インポート 'angular2-マテリア' から{MaterializeModule}。
スライダーは、初めてページを表示したり、更新したりするときに正常に動作します。
問題:router-linkを使用してナビゲートすると、ページが正しくナビゲートされますが、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();
}
}
` がエラー: 取得中にエラー: ERRORの例外TypeError:a.addEventListenerが機能
ではありませんat http://localhost:4200/vendor.bundle.js:15611:765
at Array.forEach (native)
詳細をお知らせください。私は 'Materialize( '。button-dropdown')'を実行しようとしましたが、 "Materialize is not a function"というエラーが出ます。私は '$( '。button-dropdown')をやってみました。 '、しかし私は同じ問題を見続けています - ドロップダウンは2ページで(無作為に)動作しますが、3番目のページでは機能しません。 これは、 'ngAfterViewChecked'で' Materialize.updateTextFields() 'のエラーを解決するのに役立ちました。私は新しいページの読み込みでエラーが発生しました。準備が整った文書でそれをラップします。 – Will
この回答はとても役に立ちます。私の問題は今解決されました。たくさんありがとう.......... –