我在为包含 ng 引导模式的组件设置依赖项时遇到问题。以下代码来自隔离问题的测试项目。提供网站时,该组件可以正常工作并运行,但测试似乎存在依赖性问题。我正在使用 NgbModal 服务来打开和关闭组件内的模式。这是组件的设置:
@Component({
selector: 'app-main-component',
templateUrl: './main.component.html',
styleUrls: ['./main.component.css'],
providers: [ NgbModal ]
})
export class MainComponent implements OnInit {
constructor(private modalService: NgbModal) { }
这是在 app.module.ts 中设置依赖项的位置:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { MainComponent } from './main/main.component';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
@NgModule({
declarations: [
AppComponent,
MainComponent
],
imports: [
BrowserModule,
NgbModule.forRoot()
],
bootstrap: [AppComponent]
})
并且测试平台的依赖项在此处的 main.component.ts 文件中设置:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MainComponent ],
imports: [ NgbModule.forRoot(), BrowserModule ],
providers:[ NgbModal ]
})
.compileComponents();
component = TestBed.get(MainComponent);
modalService = TestBed.get(NgbModal);
}));
当我尝试运行测试时,它给了我这个错误
Failed: StaticInjectorError(DynamicTestModule)[NgbModal -> NgbModalStack]:
StaticInjectorError(Platform: core)[NgbModal -> NgbModalStack]:
NullInjectorError: No provider for NgbModalStack!
这似乎意味着缺少依赖项。在主应用程序中出现这样的错误似乎通常是由于 NgbModule.forRoot() 没有被导入但它在测试的导入中引起的。感谢您的时间。