NG-bootstrap 模态组件不提供错误
NG-bootstrap Modal Component no provider error
我是 angular 2 的 ng-bootstrap 库;特别是我正在查看:Components as content。我试图将示例代码合并到我的项目中,但收效甚微。我从浏览器调试器得到的错误是
没有 NgbModal 的提供程序,我在示例代码中没有看到任何提供程序。遗憾的是,我不确定在哪里可以设置 angular 2 项目进行演示。我想做的就是采用他们的示例代码并将其实施到 ng new <projectname>
将使用 modile.component.ts
和 app.component.ts
文件生成的标准项目中。
app.module.ts
import { Component, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { JsonpModule } from '@angular/http';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { AppComponent } from './app.component';
import { NgbdModalComponent, NgbdModalContent } from './modal.component';
@NgModule({
imports: [
BrowserModule,
FormsModule
],
declarations: [
AppComponent,
NgbdModalComponent, NgbdModalContent
],
entryComponents: [NgbdModalContent],
bootstrap: [ AppComponent ]
})
export class AppModule { }
app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Tour of Heroes';
}
app.component.html
<div class="container-fluid">
<hr>
<p>
This is a demo plnkr forked from the <strong>ng-bootstrap</strong> project: Angular powered Bootstrap.
Visit <a href="https://ng-bootstrap.github.io/" target="_blank">https://ng-bootstrap.github.io</a> for more widgets and demos.
</p>
<hr>
<ngbd-modal-component></ngbd-modal-component>
</div>
modal.component.ts
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>NgbdModalComponent
<div class="modal-footer">
<button type="button" class="btn btn-secondary" (click)="activeModal.close('Close click')">Close</button>
</div>
`
})
export class NgbdModalContent {
@Input() name;
constructor(public activeModal: NgbActiveModal) {}
}
@Component({
selector: 'ngbd-modal-component',
templateUrl: './modal.component.html'
})
export class NgbdModalComponent {
constructor(private modalService: NgbModal) {}
open() {
const modalRef = this.modalService.open(NgbdModalContent);
modalRef.componentInstance.name = 'World';
}
}
modal.component.html
<p>You can pass an existing component as content of the modal window. In this case remember to add content component
as an <code>entryComponents</code> section of your <code>NgModule</code>.</p>
<button class="btn btn-lg btn-outline-primary" (click)="open()">Launch demo modal</button>
错误:没有 NgbModal 的提供者,错误上下文,未处理的承诺拒绝:没有 NgbModal 的提供者。感谢反馈。
您必须将 NgbModule
导入 imports 数组 NgModule
。
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
@NgModule({
...
imports: [NgbModule.forRoot(), ...],
...
})
export class AppModule {
}
以防万一您使用延迟加载。将 NgbModule 放入 imports 数组中也很重要。不过这次不像@Pengyy说的那样,而是
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
@NgModule({
...
imports: [NgbModule, ...],
...
})
export class LazyLoadedModule {
}
尝试在组件
上提供NgbActiveModal
providers: [
NgbActiveModal,
]
我是 angular 2 的 ng-bootstrap 库;特别是我正在查看:Components as content。我试图将示例代码合并到我的项目中,但收效甚微。我从浏览器调试器得到的错误是
没有 NgbModal 的提供程序,我在示例代码中没有看到任何提供程序。遗憾的是,我不确定在哪里可以设置 angular 2 项目进行演示。我想做的就是采用他们的示例代码并将其实施到 ng new <projectname>
将使用 modile.component.ts
和 app.component.ts
文件生成的标准项目中。
app.module.ts
import { Component, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { JsonpModule } from '@angular/http';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { AppComponent } from './app.component';
import { NgbdModalComponent, NgbdModalContent } from './modal.component';
@NgModule({
imports: [
BrowserModule,
FormsModule
],
declarations: [
AppComponent,
NgbdModalComponent, NgbdModalContent
],
entryComponents: [NgbdModalContent],
bootstrap: [ AppComponent ]
})
export class AppModule { }
app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Tour of Heroes';
}
app.component.html
<div class="container-fluid">
<hr>
<p>
This is a demo plnkr forked from the <strong>ng-bootstrap</strong> project: Angular powered Bootstrap.
Visit <a href="https://ng-bootstrap.github.io/" target="_blank">https://ng-bootstrap.github.io</a> for more widgets and demos.
</p>
<hr>
<ngbd-modal-component></ngbd-modal-component>
</div>
modal.component.ts
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>NgbdModalComponent
<div class="modal-footer">
<button type="button" class="btn btn-secondary" (click)="activeModal.close('Close click')">Close</button>
</div>
`
})
export class NgbdModalContent {
@Input() name;
constructor(public activeModal: NgbActiveModal) {}
}
@Component({
selector: 'ngbd-modal-component',
templateUrl: './modal.component.html'
})
export class NgbdModalComponent {
constructor(private modalService: NgbModal) {}
open() {
const modalRef = this.modalService.open(NgbdModalContent);
modalRef.componentInstance.name = 'World';
}
}
modal.component.html
<p>You can pass an existing component as content of the modal window. In this case remember to add content component
as an <code>entryComponents</code> section of your <code>NgModule</code>.</p>
<button class="btn btn-lg btn-outline-primary" (click)="open()">Launch demo modal</button>
错误:没有 NgbModal 的提供者,错误上下文,未处理的承诺拒绝:没有 NgbModal 的提供者。感谢反馈。
您必须将 NgbModule
导入 imports 数组 NgModule
。
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
@NgModule({
...
imports: [NgbModule.forRoot(), ...],
...
})
export class AppModule {
}
以防万一您使用延迟加载。将 NgbModule 放入 imports 数组中也很重要。不过这次不像@Pengyy说的那样,而是
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
@NgModule({
...
imports: [NgbModule, ...],
...
})
export class LazyLoadedModule {
}
尝试在组件
上提供NgbActiveModalproviders: [
NgbActiveModal,
]