Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Problema com escopo dos Componentes do Angular 2 com a importação de Javascripts externos.

Olá pessoal e instrutores..

Estou com um problema e acredito que o mesmo está relacionado ao escopo dos Componentes no Angular 2.

Primeiramente, gostaria de comentar sobre a divisão do projeto. Ele está dividido em cinco componentes, o App, Menu-left, Menu-header, Content e Footer-Component.

Index:

<html>
  <head>
    <meta charset="utf-8">
    <title>Frontend</title>
    <base href="/">
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body class="nav-md">
    <div class="container body">
        <div class="main_container">
          <app-root></app-root>
        </div>
    </div>
  </body>
</html>

O <app-root></app-root> é o principal e é composto pelos módulos:

app.component.ts:
<menu-left></menu-left>
<menu-header></menu-header>
<content></content>
<footer-component></footer-component>

Dentro de cada um há um conteúdo HTML que será apresentado ao usuário, com o o menu no topo (menu-header), um menu na esquerda (menu-left), etc...

O problema que estou tendo é em relação ao carregamento do Javascript na apresentação desses dados, ou seja, os Javascripts funcionam para o Menu-Header, no qual é apresentado um menu drop-down com os efeitos 100%. Porém, o mesmo não ocorre para o Menu-Left, em que também há um menu drop-down.

O que eu testei foi o seguinte: juntei todos os HTMLs (do menu-left, menu-header, content, footer) e os inseri diretamente na página principal (index.html) e o mais frustrante foi que funcionou tudo, com 100% dos efeitos carregados dos Javascripts que importei.

Vale ressaltar que estou usando o Angular-CLI e estou importando os Styles e Javascripts da seguinte maneira:

angular-cli.json:
{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "name": "frontend"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "../../../target/frontend",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      "styles": [
        "../node_modules/gentelella/vendors/bootstrap/dist/css/bootstrap.min.css",
        "../node_modules/gentelella/vendors/font-awesome/css/font-awesome.min.css",
        "../node_modules/gentelella/vendors/iCheck/skins/flat/green.css",
        "../node_modules/gentelella/vendors/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css",
        "../node_modules/gentelella/production/css/maps/jquery-jvectormap-2.0.3.css",
        "../node_modules/gentelella/production/less/custom.css"        
      ],
      "scripts": [
        "../node_modules/gentelella/vendors/jquery/dist/jquery.min.js",
        "../node_modules/gentelella/vendors/bootstrap/dist/js/bootstrap.min.js",
        "../node_modules/gentelella/build/js/custom.min.js"
    ...
      ],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [
    {
      "project": "src/tsconfig.app.json"
    },
    {
      "project": "src/tsconfig.spec.json"
    },
    {
      "project": "e2e/tsconfig.e2e.json"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "component": {}
  }
}

Gostaria de uma sugestão que possa me ajudar a encontrar esse problema que eu acredito ser de 'escopo', pois foi o que mais me fez sentido.

Valeeu!!

4 respostas

Bom dia!

Há bugs seríssimo no Angular CLI. Já verificou se você caiu em algum deles? Em teoria seu código deveria ter funcionado.

solução!

Bom dia Flávio, realmente não achei nada em relação há um bug específico. O que tive que fazer foi re-implementar os JQuery que estavam em custom dentro do meu Component.

Opa! Então deu certo?

Sim sim, depois que implementei os JQuery's do custom para meu Component deu certo. Então não precisei mais importar o custom, hehe.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software