Raf*_*yes 3 modal-dialog ng-bootstrap angular
我想使用角度4.0.0和ng-bootstrap 1.0.0-beta.4在模态中显示消息,但它不显示模态.
APP-module.ts
@NgModule({
// ...
declarations: [
LoginComponent
],
imports: [
// ...
NgbModule.forRoot()
],
entryComponents: [LoginComponent],
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
login.component.ts
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent {
@ViewChild('examplemodal')
private modalRef: TemplateRef<any>;
constructor(private modalService: NgbModal) { }
//.... some event that fires onModalRequest()
onModalRequest(): void {
const modalRef = this.modalService.open(this.modalRef); //Not working
modalRef.result.then((result) => {
console.log(result);
console.log('closed');
}).catch( (result) => {
console.log(result);
console.log('cancelling');
});
}
}
Run Code Online (Sandbox Code Playgroud)
examplemodal.html
<ng-template #examplemodal>
<div class="modal">
stuff here...
</div>
</ng-template>
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?
以下是我在我的应用程序中实现的方式:
app.module.ts
@NgModule({
// ...
declarations: [
LoginComponent,
ModalComponent
],
imports: [
// ...
NgbModule.forRoot()
],
entryComponents: [ModalComponent], //Only Modal component included here
bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
从我打开模态的组件.你的案例中的LoginComponent:
imports ....
import { ModalComponent} from '../Modal/Modal.component'; //My actual Modal component which includes HTML for modal
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent {
@ViewChild('examplemodal')
private modalRef: TemplateRef<any>;
constructor(private modalService: NgbModal) { }
//.... some event that fires onModalRequest()
onModalRequest(): void {
const modalRef = this.modalService.open(ModalComponent); //Added Modal Component here
modalRef.componentInstance.src = link;//anything u wish to pass to modal component @Input
modalRef.result.then((result) => {
console.log(result);
console.log('closed');
}).catch( (result) => {
console.log(result);
console.log('cancelling');
});
}
}
Run Code Online (Sandbox Code Playgroud)
Modal.component.ts:
import { Component, OnInit, Input } from '@angular/core';
import { NgbModal, NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss']
})
export class ModalComponent implements OnInit {
@Input() src;
constructor(public activeModal: NgbActiveModal) { }
ngOnInit() {
}
}
Run Code Online (Sandbox Code Playgroud)
Modal.component.html:
<div class="modal-header">
<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
STUFF HERE
</div>
Run Code Online (Sandbox Code Playgroud)
在这里工作演示
请注意:您需要为SCSS安装Bootstrap 4.
npm install bootstrap -D并在你的style.scss中包含它的引用,如:
@import "node_modules/bootstrap/scss/bootstrap";
Run Code Online (Sandbox Code Playgroud)