角度4 ng测试失败:模板解析错误:' router-outlet'不是一个已知的元素:

时间:2018-03-05 08:29:08

标签: angular jasmine

失败:模板解析错误: '路由器出口'不是一个已知元素:

  1. 如果' router-outlet'是一个Angular组件,然后验证它是否是该模块的一部分。

  2. If 'router-outlet' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("[ERROR ->]<router-outlet></router-outlet>"): ng:///DynamicTestModule/***.html@0:0

  3.   

    角度4 ng测试失败:模板解析错误:&#39; router-outlet&#39;不是一个已知的元素

    enter image description here

2 个答案:

答案 0 :(得分:4)

尝试: 在(app.component.spec.ts)中 从@ angular / router / testing将 imports:[RouterTestingModule] 添加到您的TestBed中,如下所示:

import { RouterTestingModule } from '@angular/router/testing'; // <= here
...
describe('AppComponent', () => {
  beforeEach(async(() => {
    TestBed.configureTestingModule({
        imports: [RouterTestingModule], // <= and here
        declarations: [
            AppComponent,

        ],
    }).compileComponents();
  }));
});

OR 有时,只需一行代码即可解决此问题。 加: 出口:[ RouterModule ], 到您的routing.module.ts的@NgModule中,它将解决此问题。 这是我的 routing.module.ts ,我必须手动添加它,因为当我进行 ng gm路由时,Angular CLI并未添加它。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = 
[
    // Your paths to the components
]

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot(routes),

  ],
  declarations: [],
  exports: [ RouterModule ], // <= Add this line 
})
export class ComponentRoutingModule { }

RoutingModule 导入到您的 app.module.ts 中。

希望有帮助。

答案 1 :(得分:1)

请检查您的方案中的答案是否有效 SO Link

重要提示...打开NG Test Guide,然后点击“测试”的链接。这将打开测试样本。 在项目中复制文件“Testing \ activated-route-stub.ts”“Testing \ router-link-directive-stub.ts”(更好地在单独的项目中)夹)。

现在转到“app.component.spec.ts”并注意如何将这两个文件添加为每个测试模块的声明...另请注意路由器选项的 @Component 声明没有它,存根将无法工作。

该规范还说明了如何使用存根实际测试路由器链接..

做同样的事情并享受...让我知道它是否有帮助:)如果有任何错误,请确保您导入所有项目

(我的规范文件如下)

  

从'../ router-stubs.module'导入{RouterLinkDirectiveStub};

     

@Component({selector:'router-outlet',template:''})

     

class RouterOutletStubComponent {}

...

  

声明:[
          MyOwnComponent,
          RouterLinkDirectiveStub, 这里我们添加我们的组件和存根           RouterOutletStubComponent
        ],