失败:模板解析错误: '路由器出口'不是一个已知元素:
如果' router-outlet'是一个Angular组件,然后验证它是否是该模块的一部分。
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
角度4 ng测试失败:模板解析错误:&#39; router-outlet&#39;不是一个已知的元素
答案 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
],