bootstrap image carousel does not work in angular

The first image of the carousel appears in my page, however the buttons do not work and neither does the images move. I have tried using different types of bootstrap carousel but to no avail. I saw some answers which suggested to add jQuery and Bootstrap links to the top, so i tried that but didn’t work either. I think the issue could be due to the fact that i am working on angular? I also noticed that when i clicked on the buttons, my localhost link would change from localhost:3000 to localhost:3000/#carouselExampleIndicators

home.component.html

<header>     <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet">     <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>            <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">         <ol class="carousel-indicators">             <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>             <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>             <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>         </ol>         <div class="carousel-inner">             <div class="carousel-item active">                 <img class="d-block w-100" src="https://placeimg.com/1080/500/animals" alt="First slide">                 <div class="carousel-caption d-none d-md-block">                     <h5>My Caption Title (1st Image)</h5>                     <p>The whole caption will only show up if the screen is at least medium size.</p>                 </div>             </div>             <div class="carousel-item">                 <img class="d-block w-100" src="https://placeimg.com/1080/500/arch" alt="Second slide">             </div>             <div class="carousel-item">                 <img class="d-block w-100" src="https://placeimg.com/1080/500/nature" alt="Third slide">             </div>         </div>         <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">             <span class="carousel-control-prev-icon" aria-hidden="true"></span>             <span class="sr-only">Previous</span>         </a>         <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">             <span class="carousel-control-next-icon" aria-hidden="true"></span>             <span class="sr-only">Next</span>         </a>     </div>  </header> 

index.html

<!doctype html> <html lang="en"> <head> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">   <meta charset="utf-8">   <title>CastleApp</title>   <base href="/">    <meta name="viewport" content="width=device-width, initial-scale=1">   <link rel="icon" type="image/x-icon" href="favicon.ico">   <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"> </head> <body>   <app-root></app-root> </body> </html> 
Add Comment
1 Answer(s)

Bootstrap requires JQuery for this kind of actions. You either need to add jquery in your index.html or add it to angular-cli.json or angular.json (depending on your version of Angular):

Approach 1 (Recommended):

Run first this command to install both JQuery and Bootstrap:

$ npm install  jquery bootstrap --save 

Then add these lines to angular-cli.json or angular.json (depending on your version of Angular)

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

Approach 2 (Not recommended):

Add the needed scripts in your index.html. Be careful though as you’ll download these templates each time you reload the page.

<!doctype html> <html lang="en"> <head> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">   <meta charset="utf-8">   <title>CastleApp</title>   <base href="/">    <meta name="viewport" content="width=device-width, initial-scale=1">  <link rel="icon" type="image/x-icon" href="favicon.ico">     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">  </head> <body>   <app-root></app-root>   <!-- Optional JavaScript -->   <!-- jQuery first, then Popper.js, then Bootstrap JS -->   <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>   <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>   <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>    </body> </html> 

More information from the documentation

Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.