2017-09-21 41 views
7

Używam NG-bootstrap w moim kątowe 4 projekt:pasek nawigacyjny nie toggle pracy z kątowe 4/NG-bootstrap

<navbar class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top"> 
    <button aria-controls="navbarsDefault" aria-expanded="false" aria-label="Toggle navigation" class="navbar-toggler navbar-toggler-right" data-target="#navbarsDefault" data-toggle="collapse" type="button"> 
     <span class="navbar-toggler-icon"></span> 
    </button> 
    <a class="navbar-brand" href="#">Navbar</a> 
    <div class="collapse navbar-collapse" id="navbarsDefault"> 
     <ul class="navbar-nav mr-auto"> 
      <li class="nav-item"> 
       <a class="nav-link active" routerlink="/dashboard" routerlinkactive="active" ng-reflect-router-link="/dashboard" ng-reflect-router-link-active="active" href="/dashboard">Dashboard</a> 
      </li> 
      <li class="nav-item"> 
       <a class="nav-link" routerlink="/program" routerlinkactive="active" ng-reflect-router-link="/program" ng-reflect-router-link-active="active" href="/program">Programm</a> 
      </li>   
     </ul> 
    </div> 
</navbar> 

pasek nawigacyjny jest tam, jest czuły, wydaje się działać w porządku. Ale przycisk navbar-toggler nie przełącza paska nawigacyjnego, gdy jest zwinięty i nie mogę znaleźć błędu.

+0

Czy sprawdziłeś w konsoli przeglądarki błędy? Przydałby Ci się również problem z JSfiddle :) –

+0

Nie ma żadnego błędu, ponieważ nie ma żadnego zdarzenia związanego z przyciskiem przełączającym. Bootstrap powinien to zapewnić, ale tak nie jest. I nie mogę zapewnić JSfiddle, ponieważ kąt 4 nie jest dostępny w JSfiddle. – Braste84

+0

To zadziałało dobrze dla mnie. Dzięki! –

Odpowiedz

14

skończyło się robi coś takiego:

W szablonie html mam ten kod:

<nav id="mainNavbar" class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top"> 
     <a class="navbar-brand" href="#">Navbar</a> 
     <button class="navbar-toggler" type="button" data-toggle="collapse" 
      data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" 
      aria-expanded="false" aria-label="Toggle navigation" 
      (click)="toggleCollapsed()"> 
      <span class="navbar-toggler-icon"></span> 
     </button> 
     <div id="navbarSupportedContent" [ngClass]="{'collapse': collapsed, 'navbar-collapse': true}"> 
      ...... 
     </div> 
</nav> 

w składniku mam ten

export class NavComponent { 
    collapsed = true; 
    toggleCollapsed(): void { 
     this.collapsed = !this.collapsed; 
    } 
} 
+0

To zadziałało dla mnie. Powinna to być akceptowana odpowiedź –

+0

@ jmiguel77 Dziękuję, proszę pana, Twoja odpowiedź działa dla mnie. :RE – core114

1

jak to, co zostało wymienione w komentarze i górna odpowiedź jmiguel77

Chciałem się podzielić tym, że ja też Znalazłem podobny sposób robienia tego na Ng-bootstrap Github docs https://ng-bootstrap.github.io/#/components/collapse/examples

Użyłem zamiast tego [ngbCollapse] = "isCollapsed". Oba sposoby dają taki sam rezultat z tego, co zobaczyłem.

Oto mój kod:

//app-navbar.component.html 


    <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top"> 
    <a class="navbar-brand" href="#">{{title}}</a> 
    <button class="navbar-toggler" type="button" (click)="toggleCollapsed()" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation"> 
    <span class="navbar-toggler-icon" ngToggler></span> 
    </button> 
    <div class="collapse navbar-collapse" id="navbarsExampleDefault" [ngbCollapse]="isCollapsed" > 
    <ul class="navbar-nav mr-auto"> 
     <li class="nav-item active"> 
     <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> 
     </li> 
     <li class="nav-item"> 
     <a class="nav-link" href="#">Link</a> 
     </li> 
     <li class="nav-item"> 
     <a class="nav-link disabled" href="#">Disabled</a> 
     </li> 
     <li class="nav-item dropdown" ngbDropdown> 
     <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ngbDropdownToggle>Dropdown</a> 
     <div class="dropdown-menu" aria-labelledby="dropdown01" ngbDropdownMenu> 
      <a class="dropdown-item" href="#">Action</a> 
      <a class="dropdown-item" href="#">Another action</a> 
      <a class="dropdown-item" href="#">Something else here</a> 
     </div> 
     </li> 
    </ul> 
    <form class="form-inline my-2 my-lg-0"> 
     <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search"> 
     <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> 
    </form> 
    </div> 
</nav> 

//app-navbar.component.ts 

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




@Component({ 
    selector: 'app-navbar', 
    templateUrl: './app-navbar.component.html', 
    styleUrls: ['./app-navbar.component.css'] 
}) 
export class AppNavbarComponent implements OnInit { 
    @Input() title: String; 
    isCollapsed = true; 
    toggleCollapsed(): void { 
    this.isCollapsed = !this.isCollapsed; 
    } 

    constructor() { } 



    ngOnInit() { 
    } 



} 
0

Jego bardzo proste i dość prosto do przodu,

w C:\Niagara\Vega\ncPortal\.angular-cli.json

pod skryptów, dodać tę linię, lub wskaż plik z bootstrap.js node_modules,

"../node_modules/bootstrap/dist/js/bootstrap.js" 

i przebuduj swoją aplikację, teraz, nie tylko przełącznik, ale wszystkie inne działania również będą działały zgodnie z oczekiwaniami.