i have a homecomponent where the html is
//home.component.html
<router-outlet></router-outlet>
//home.component.ts
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { HomeService} from './shared/services/home.service';
@Component({
// moduleId: module.id,
selector: 'app-home',
templateUrl: 'home.component.html',
styleUrls: ['home.component.css'],
providers:[HomeService]
})
export class HomeComponent implements OnInit {
constructor(private service:HomeService , private route:Router) { }
ngOnInit() {
if(this.service.isAuthenticated()){
this.route.navigateByUrl('dashboard/main');
}
}
}
//home.component.spec.ts
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { async, inject } from '@angular/core/testing';
import { HomeComponent } from './home.component';
import { Router} from '@angular/router';
import { HomeService } from './shared/services/home.service';
class RouterStub {
navigateByUrl(url: string) { return url }
}
class MockHomeService {
isAuthenticated() {
return true
}
}
let comp: HomeComponent;
let fixture: ComponentFixture<HomeComponent>;
describe('Component: HomeComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [HomeComponent],
providers: [
{ provide: Router, useClass: RouterStub },
{ provide: HomeService, useClass: MockHomeService },
]
});
fixture = TestBed.createComponent(HomeComponent);
comp = fixture.componentInstance;
});
it('should tell ROUTER to navigate to dashboard/main if authencated',
inject([Router, HomeService], (router: Router, homeservice: HomeService) => {
const spy = spyOn(router, 'navigateByUrl');
comp.ngOnInit();
if (homeservice.isAuthenticated()) {
const navArgs = spy.calls.first().args[0];
expect(navArgs).toBe('dashboard/main');
}
}));
});
I am getting the following error
Error: Template parse errors:
'router-outlet' is not a known element:
1. If 'router-outlet' is an Angular component, then verify that it is pa
rt of this module.
2. If 'router-outlet' is a Web Component then add "CUSTOM_ELEMENTS_SCHEM
A" to the '@NgModule.schema' of this component to suppress this message. ("<div
class="">
[ERROR ->]<router-outlet></router-outlet>
</div>
"): HomeComponent@1:4
at TemplateParser.parse (http://localhost:9876/_karma_webpack_/0.bun
dle.js:21444:19)
at RuntimeCompiler._compileTemplate (http://localhost:9876/_karma_we
bpack_/0.bundle.js:6569:51)
at http://localhost:9876/_karma_webpack_/0.bundle.js:6492:83
at Set.forEach (native)
at compile (http://localhost:9876/_karma_webpack_/0.bundle.js:6492:4
7)
at RuntimeCompiler._compileComponents (http://localhost:9876/_karma_
webpack_/0.bundle.js:6494:13)
at RuntimeCompiler._compileModuleAndAllComponents (http://localhost:
9876/_karma_webpack_/0.bundle.js:6411:37)
at RuntimeCompiler.compileModuleAndAllComponentsSync (http://localho
st:9876/_karma_webpack_/0.bundle.js:6399:21)
at TestingCompilerImpl.compileModuleAndAllComponentsSync (http://loc
alhost:9876/_karma_webpack_/0.bundle.js:10203:35)
at TestBed._initIfNeeded (webpack:///D:/myapp/transfer(9)/transfer/~
/@angular/core/bundles/core-testing.umd.js:1059:0 <- src/test.ts:4943:40)
what is the mistake i am doing ?
Thanks in advance