Pesquisa de site

jquery - Usando angular-material-design em aplicativo Angular 4 (+ Angular CLI)


Como usar bootstrap-material-design em um aplicativo Angular 4 (com Angular CLI)?

Acabei de adicionar um arquivo css no meu styles.css assim:

@import "~bootstrap-material-design/dist/css/bootstrap-material-design.min.css";

Posso acessar as classes do bootstrap-material-design, mas alguns elementos, como os campos de entrada, não funcionam como deveriam.

Eu acho que tenho que adicionar no arquivo .angular-cli.json os scripts jQuery e bootstrap-material-design, mas isso também não funcionou.

Qual é a maneira correta?

Nos Docs, eu preciso inicializar o material javascript adicionando o seguinte javascript ao seu site, mas eu não consigo.

$.material.init()

Resposta #1

Uma vez que você tenha instalado a biblioteca executando

npm install --save bootstrap-material-design

você deve ser capaz de vincular todos os arquivos css e js ao seu projeto.

Para fazer isso, você deve vincular tais arquivos no seu arquivo angular-cli.json.

Os arrays para preencher no json são respectivamente styles para o css e scripts para o js.

  "styles": [
    ...
    "../node_modules/bootstrap-material-design/sass/bootstrap-material-design.scss"
    ...
  ]

  ...

  "scripts": [
    "../node_modules/bootstrap-material-design/scripts/index.js"
  ]

Espero que isso funcione para você!

EDITAR :

Se você quiser usar o Material Design mais facilmente, pode experimentar este:

https://github.com/angular/material2

Também é o oficial, bem integrado com o framework.

Resposta #2

Obrigado ao Nano pela sua resposta que me ajuda.

Então, eu adicionei meus estilos e scripts assim no angular-cli.json:

    "styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
        "../node_modules/bootstrap-material-design/dist/css/bootstrap-material-design.min.css",
        "styles.css"
    ],
    "scripts": [
        "../node_modules/jquery/dist/jquery.min.js",
        "../node_modules/bootstrap/dist/js/bootstrap.min.js",
        "../node_modules/bootstrap-material-design/dist/js/material.min.js"
    ]

Então, precisamos iniciar o bootstrap-material-design. É importante fazer isso após a inicialização do contexto. Então, em um ngOnInit() foi perfeito para mim. Eu fiz isso no meu app.component.ts assim:

import { Component, OnInit } from '@angular/core';

declare let jQuery: any;

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
    ngOnInit() {
        // Init bootstrap-material-design
        jQuery.material.init();
    }
}

E funciona como eu quero. As entradas são normais.