Angular + ng-bootstrap - Modal : window does not open

前端 未结 3 1614
谎友^
谎友^ 2021-01-06 10:14

I\'m new with Angular, and i have a problem while trying the simple example with ng-bootstrap modal. I just tried to have a window open and instead it appears in my applica

相关标签:
3条回答
  • 2021-01-06 10:50

    I had problem when i was using the https://github.com/ankosoftware/ng2-bootstrap-modal#readme so i fixed the problem to angular 8

    https://www.npmjs.com/package/ngm-bootstrap-modal

    0 讨论(0)
  • 2021-01-06 10:55

    //1. The modal component has to be registered in entryComponents (angualr 8 and prev)

    //1. The modal component has to be registered in entryComponents (angualr 8 and prev)
    
     entryComponents: [
        YourModalComponent
      ],
      providers: [
       ...]
    
    //2. also the model directly inputted in the open:
      openConfirmUpdateModal() {
     this.modalService.open( YourModalComponent);
     }

    0 讨论(0)
  • 2021-01-06 11:13

    As described in ng-bootstrap NgbModal "A service to open modal windows" and it has no properties to open modal window in new browser window.

    I've created the same app as you:

    • angular 4.1.0-beta.0
    • bootstrap 4.0.0-alpha.6
    • ng-bootstrap 1.0.0-alpha.22

    And modal windows works as expected, here is content of my app

    app.module.ts

    import { BrowserModule } from '@angular/platform-browser';
    import { NgModule } from '@angular/core';
    import { FormsModule } from '@angular/forms';
    import { HttpModule } from '@angular/http';
    import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
    
    import { AppComponent } from './app.component';
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        BrowserModule,
        FormsModule,
        HttpModule,
        NgbModule.forRoot()
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { }

    index.html (I use Bootstrap CDN)

    <!doctype html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>AngularModal</title>
      <base href="/">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="icon" type="image/x-icon" href="favicon.ico">
    </head>
    <body>
      <app-root>Loading...</app-root>
    </body>
    </html>

    app.component.ts

    import { Component } from '@angular/core';
    import {NgbModal, ModalDismissReasons} from '@ng-bootstrap/ng-bootstrap';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    
    export class AppComponent {
      closeResult: string;
    
      constructor(private modalService: NgbModal) {}
    
      open(content) {
        this.modalService.open(content).result.then((result) => {
          this.closeResult = `Closed with: ${result}`;
        }, (reason) => {
          this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
        });
      }
    
      private getDismissReason(reason: any): string {
        if (reason === ModalDismissReasons.ESC) {
          return 'by pressing ESC';
        } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {
          return 'by clicking on a backdrop';
        } else {
          return  `with: ${reason}`;
        }
      }
    }

    app.component.html

    <template #content let-c="close" let-d="dismiss">
      <div class="modal-header">
        <h4 class="modal-title">Modal title</h4>
        <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <p>One fine body&hellip;</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" (click)="c('Close click')">Close</button>
      </div>
    </template>
    
    <button class="btn btn-lg btn-outline-primary" (click)="open(content)">Launch demo modal</button>
    
    <hr>
    
    <pre>{{closeResult}}</pre>

    0 讨论(0)
提交回复
热议问题