我在Angular 4中创建了一些测试.我有一个使用PrettyJsonCompont的组件,以便向用户显示格式良好的json.
当我运行测试时,我的几个组件测试失败并显示相同的消息.
失败:类型PrettyJsonComponent是2个模块的声明的一部分:PrettyJsonModule和DynamicTestModule!请考虑将PrettyJsonComponent移动到导入PrettyJsonModule和DynamicTestModule的更高模块.您还可以创建一个新的NgModule,它导出并包含PrettyJsonComponent,然后在PrettyJsonModule和DynamicTestModule中导入该NgModule.
这是我的测试的样子.
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {ContentItemModalComponent} from './content-item-modal.component';
import {DialogService} from 'ng2-bootstrap-modal';
import {ContentItemService} from '../services/content-item.service';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {FroalaEditorModule, FroalaViewModule} from 'angular-froala-wysiwyg';
import {HttpModule} from '@angular/http';
import {MainModel} from '../models/main-model';
import {PrettyJsonComponent, PrettyJsonModule} from 'angular2-prettyjson';
describe('ContentItemModalComponent', () => {
let component: ContentItemModalComponent;
let fixture: ComponentFixture<ContentItemModalComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
ReactiveFormsModule,
FormsModule,
FroalaEditorModule.forRoot(),
FroalaViewModule.forRoot(),
HttpModule,
PrettyJsonModule
],
declarations: [ContentItemModalComponent, PrettyJsonComponent],
providers: [
DialogService,
ContentItemService,
MainModel
],
})
.compileComponents(); …Run Code Online (Sandbox Code Playgroud) 我正在编写第一个测试并处理此错误:
错误:类型 SearchComponent 是 2 个模块声明的一部分:AppModule 和 DynamicTestModule!请考虑将 SearchComponent 移至导入 AppModule 和 DynamicTestModule 的更高模块。您还可以创建一个新的 NgModule 来导出并包含 SearchComponent,然后在 AppModule 和 DynamicTestModule 中导入该 NgModule。
在我的应用程序中,我只有一个模块:AppModule.ts. 并且SearchComponent只在那里声明。如果我创建第二个模块(又名 ChildModule)并将 SearchComponent 移动到那里,错误消息将具有相同的内容,但模块的名称将从 AppModule 更改为 ChildModule。我在我拥有的每个组件中都有相同的错误。
如果我从规范文件中的导入中删除 AppModule 并添加NO_ERRORS_SCHEMA,错误就会消失。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app.component';
import { OtherComponentOne} from …Run Code Online (Sandbox Code Playgroud) 我创建了一个名为commonmod.component.ts的组件,该组件包含在其他两个模块(abc和def)中。
abc.module.ts
import { commonmod } from '../commonmod/commonmod.component';
@NgModule({
declarations: [
commonmod
]
})
Run Code Online (Sandbox Code Playgroud)
def.module.ts
import { commonmod } from '../commonmod/commonmod.component';
@NgModule({
declarations: [
commonmod
]
})
Run Code Online (Sandbox Code Playgroud)
当我将abc模块中的一页重定向到def模块中的另一页时,它使我跟随以下错误。
错误错误:未捕获(承诺):错误:类型commonmod是2个模块的声明的一部分:abcand def!请考虑将commonmod移至导入abc和def的更高模块。您还可以创建一个新的NgModule,以导出并包括commonmod,然后在abcand def中导入该NgModule。错误:类型commonmod是2个模块的声明的一部分:abc和def!请考虑将commonmod移至导入abcand def的更高模块。您还可以创建一个新的NgModule,将其导出并包括commonmod,然后在abc和def中导入该NgModule。