首页 文章

Angular ng-bootstrap - 模态:窗口无法打开

提问于
浏览
2

我是Angular的新手,在尝试使用ng-bootstrap模式的简单示例时遇到了问题 . 我只是尝试打开一个窗口,而是出现在我的应用程序中 . 我想打开一个新窗口,因为它在ng-bootstrap示例中进行了解释 .

我正在使用: - Angular 4.0.0 - Bootstrap 4.0.0-alpha.6 - @ ng-bootstrap / ng-bootstrap 1.0.0-alpha.22

我在我的file.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>

    <pre>{{closeResult}}</pre>

在我的文件中:

import { Component, Input, Output, EventEmitter, ViewContainerRef } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { NgbModal, NgbActiveModal, NgbModalOptions, NgbModalRef, ModalDismissReasons, NgbModalModule } from '@ng-bootstrap/ng-bootstrap';


@Component( {
    selector: 'app-stagiaires',
    templateUrl: './stagiaires.component.html',
    styleUrls: ['./stagiaires.component.css'],
} )


export class StagiairesComponent {

    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}`;
        }
    }
}

我没有显示任何错误,它只是在我的应用程序中打开模态而不是新窗口,我真的不明白为什么 .

编辑:这是我的问题屏幕:Problem

我有按钮“启动演示模式”,当我点击它时,“模态 Headers ”“一个精细的身体...”出现在按钮下方而不是模态

1 回答

  • 3

    ng-bootstrap NgbModal“打开 modal 窗口的服务”中所述,它没有在新浏览器窗口中打开模态窗口的属性 .

    我创建了与您相同的应用程序:

    • angular 4.1.0-beta.0

    • bootstrap 4.0.0-alpha.6

    • ng-bootstrap 1.0.0-alpha.22

    模态窗口按预期工作,这是我的应用程序的内容

    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 (我使用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>
    

相关问题