私は次のようにガードを作成しています:
// MyGuard.ts
import { Injectable, Component } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';
import { MyService } from './services/MyService';
@Component({
providers: [MyService]
})
@Injectable()
export class MyGuard implements CanActivate {
constructor(public s : MyService) {}
canActivate(next: ActivatedRouteSnapshot, prev: RouterStateSnapshot) {
this.s.doSomething();
return true;
}
}
サービスはこちら:
// MyService.ts
import { Injectable } from '@angular/core';
import * as _ from 'lodash';
@Injectable()
export class MyService {
constructor() {
}
public doSomething() {
return this;
}
}
ページをロードすると、次のエラーが表示されます。
Error: Uncaught (in promise): No provider for MyService! (MyGuard -> MyService)
サービスを宣言するMyGuardのコンストラクターの行を削除すると
...
export class MyGuard implements CanActivate {
constructor() {} // <--- here
...
エラーなしでページを読み込むことができます。私は何を間違っていますか?