Angular 17导入Bootstrap 5轮播

问题描述 投票:0回答:1

我想在 Angular 组件中导入 BS 轮播,但它不起作用。 BS 样式导入得很好,因为我可以使用 BS 类。 我读了很多教程,所以我不明白我错过了什么。我看到了 ng-bootstrap 但我更喜欢没有它的解决方案。 我展示了我在以下文件中添加的相关代码。

// angular.json
[...]

"styles": [                                                                                                 
  "node_modules/bootstrap/dist/css/bootstrap.min.css",                                                      
  "src/styles.css"                                                                                          
],                                                                                                          
"scripts": [                                                                                                
  "node_modules/jquery/dist/jquery.min.js",                                                                 
  "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"                                                  
],

// app.module.ts
[...]

import $ from 'jquery';
import { Carousel } from 'bootstrap';

@NgModule({
  declarations: [
    AppComponent,
    AvisComponent,
  ],
  imports: [
    BrowserModule,
  ],
  providers: [],
  bootstrap: [
      AppComponent,
      AvisComponent,
  ]
})
// avis.component.ts
import { Component } from '@angular/core';
import $ from 'jquery';
import { Carousel } from 'bootstrap';

@Component({
  selector: 'app-avis',
  templateUrl: './avis.component.html',
  styleUrls: ['./avis.component.css']
})
export class AvisComponent {
  ngOnInit() {
    console.log(Carousel); // Log the BS class
    console.log($('#myCarousel).carousel()); // Log "carousel is not a function"
  }
}
angular carousel bootstrap-5
1个回答
0
投票

由于某种原因,当我从

angular.json
导入脚本时,引导程序不起作用。作为解决方法,请将脚本添加到index.html

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My app</title>
    <meta charset="UTF-8" />
  </head>
  <body>
    <app-root>Loading...</app-root>
    <script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
  </body>
</html>

角度.json

 "options": {
        "assets": [],
        "index": "src/index.html",
        "browser": "src/main.ts",
        "outputPath": "dist/demo",
        "scripts": [],
        "styles": [
          "node_modules/bootstrap/dist/css/bootstrap.min.css",
          "src/global_styles.css"
        ],
        "tsConfig": "src/tsconfig.app.json"
      }

ts

import { Component, ElementRef, ViewChild } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import 'zone.js';

@Component({
  selector: 'app-root',
  standalone: true,
  template: `
    <div id="carouselExampleIndicators" class="carousel slide">
      <div class="carousel-indicators">
        <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
        <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
        <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
      </div>
      <div class="carousel-inner">
        <div class="carousel-item active">
          <img src="https://placehold.co/600x400" class="d-block w-100" alt="...">
        </div>
        <div class="carousel-item">
          <img src="https://placehold.co/600x400" class="d-block w-100" alt="...">
        </div>
        <div class="carousel-item">
          <img src="https://placehold.co/600x400" class="d-block w-100" alt="...">
        </div>
      </div>
      <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="visually-hidden">Previous</span>
      </button>
      <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="visually-hidden">Next</span>
      </button>
    </div>
  `,
})
export class App {
  @ViewChild('myCarousel') myCarousel: ElementRef<any> | null = null;
  name = 'Angular';

  ngAfterViewInit() {}
}

bootstrapApplication(App);

堆栈闪电战

© www.soinside.com 2019 - 2024. All rights reserved.