Angular7、bootstrap渲染模态模板
Angular 7, ng-bootstrap rendering modal template
我研究了好几天了,还是没能解决这个问题。我希望能够打开一个基于 selection 的模式
的下拉菜单。我正在尝试使用 NgbModal 库中的模态服务。使用文档中的示例。当我将模态按钮放在
下拉列表没有捕捉到事件。所以我根据用户 select 在下拉菜单中的内容做了一个条件语句。问题是,我不知道如何传递模态内容
适当地。在示例中,他们使用带有 ng-template 的缩略图,并在单击模态按钮时传递内容。由于此按钮现在是 select 组件中的一个选项。当我 select 正确的下拉选项时,屏幕变暗,但没有出现模态,因为内容未定义任何帮助将不胜感激。
import {component, OnInit, Input} from '@angular/core'
import { NgbModalConfig, NgbModal, NgbActiveModal} from 'ng-bootstrap/ng-bootstrap'
@Component({
selector: 'app-nav',
templateUrl: './nav.component.html',
styleUrls: ['./nav.component.css']
})
export class NavComponent implements OnInit {
@Input('event') event: any;
constructor(public modalService: NgbModal){
this.fileMenu = [];
};
changeMenu(e) {
if (e.target.value === 'Launch Demo Modal'){
this.modalService.open(content)
}
}
}
HTML
<nav class="navbar navbar-expand navbar-dark">
<select class= "nav-drop (change)= "changeMenu($event)">
<option> File </option>
<option> Launch Demo Modal </option>
</select>
</nav>
我已经根据您的要求进行了一些更改,请按照以下代码进行操作
首先创建NgbdModalContent
个组件文件
import {Component, Input} from '@angular/core';
import {NgbModal, NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'ngbd-modal-content',
template: `
<div class="modal-header">
<h4 class="modal-title">Hi there!</h4>
<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Hello, {{name}}!</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-dark" (click)="activeModal.close('Close click')">Close</button>
</div>
`
})
export class NgbdModalContent {
@Input() name;
constructor(public activeModal: NgbActiveModal) {}
}
然后根据您的要求从我下面的主要组件调用它...
组件名称是 NgbdModalComponent
import { Component, Input } from "@angular/core";
import { NgbModal, NgbActiveModal } from "@ng-bootstrap/ng-bootstrap";
import { NgbdModalContent } from "./modal-content";
@Component({
selector: "ngbd-modal-component",
templateUrl: "./modal-component.html"
})
export class NgbdModalComponent {
constructor(private modalService: NgbModal) {}
changeMenu(e) {
if (e.target.value === "Launch Demo Modal") {
const modalRef = this.modalService.open(NgbdModalContent);
modalRef.componentInstance.name = e.target.value;
}
}
}
这里是 html
<select class= "nav-drop" (change)= "changeMenu($event)">
<option> File </option>
<option> Launch Demo Modal </option>
</select>
希望以上代码对您有所帮助
如果您有任何问题或疑问,请告诉我
谢谢
我研究了好几天了,还是没能解决这个问题。我希望能够打开一个基于 selection 的模式 的下拉菜单。我正在尝试使用 NgbModal 库中的模态服务。使用文档中的示例。当我将模态按钮放在 下拉列表没有捕捉到事件。所以我根据用户 select 在下拉菜单中的内容做了一个条件语句。问题是,我不知道如何传递模态内容 适当地。在示例中,他们使用带有 ng-template 的缩略图,并在单击模态按钮时传递内容。由于此按钮现在是 select 组件中的一个选项。当我 select 正确的下拉选项时,屏幕变暗,但没有出现模态,因为内容未定义任何帮助将不胜感激。
import {component, OnInit, Input} from '@angular/core'
import { NgbModalConfig, NgbModal, NgbActiveModal} from 'ng-bootstrap/ng-bootstrap'
@Component({
selector: 'app-nav',
templateUrl: './nav.component.html',
styleUrls: ['./nav.component.css']
})
export class NavComponent implements OnInit {
@Input('event') event: any;
constructor(public modalService: NgbModal){
this.fileMenu = [];
};
changeMenu(e) {
if (e.target.value === 'Launch Demo Modal'){
this.modalService.open(content)
}
}
}
HTML
<nav class="navbar navbar-expand navbar-dark">
<select class= "nav-drop (change)= "changeMenu($event)">
<option> File </option>
<option> Launch Demo Modal </option>
</select>
</nav>
我已经根据您的要求进行了一些更改,请按照以下代码进行操作
首先创建NgbdModalContent
个组件文件
import {Component, Input} from '@angular/core';
import {NgbModal, NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'ngbd-modal-content',
template: `
<div class="modal-header">
<h4 class="modal-title">Hi there!</h4>
<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Hello, {{name}}!</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-dark" (click)="activeModal.close('Close click')">Close</button>
</div>
`
})
export class NgbdModalContent {
@Input() name;
constructor(public activeModal: NgbActiveModal) {}
}
然后根据您的要求从我下面的主要组件调用它...
组件名称是 NgbdModalComponent
import { Component, Input } from "@angular/core";
import { NgbModal, NgbActiveModal } from "@ng-bootstrap/ng-bootstrap";
import { NgbdModalContent } from "./modal-content";
@Component({
selector: "ngbd-modal-component",
templateUrl: "./modal-component.html"
})
export class NgbdModalComponent {
constructor(private modalService: NgbModal) {}
changeMenu(e) {
if (e.target.value === "Launch Demo Modal") {
const modalRef = this.modalService.open(NgbdModalContent);
modalRef.componentInstance.name = e.target.value;
}
}
}
这里是 html
<select class= "nav-drop" (change)= "changeMenu($event)">
<option> File </option>
<option> Launch Demo Modal </option>
</select>
希望以上代码对您有所帮助
如果您有任何问题或疑问,请告诉我
谢谢