2016-06-11 80 views
2

我在將singleton服務注入指令時遇到問題。 我有服務:Angular2 - 將singleton服務注入指令

@Injectable() 
export class AuthService{ ... } 

我把它放入引導程序。

bootstrap(AppComponent, [AuthService, ...]); 

我發指令,保護我的組件:

@Directive({ 
    selector: '[protected]' 
}) 
export class ProtectedDirective { 
    constructor(private authService:AuthService) { ... } 
} 

...並添加到部件之一

@Component({ 
    selector: 'dashboard', 
    directives: [ProtectedDirective], 
    template: '<div protected></div', 
}) 
export class DashboardCmp { } 

在控制檯中,我看到了一個錯誤:

ORIGINAL EXCEPTION: No provider for AuthService! 

如果我向Dashbo添加提供程序ardCmp,一切正常,但它不是一個單身服務。我在其他組件中設置了它的屬性,並且當我處於指令狀態時我沒有看到它們。

回答

1

我解決了我的問題。一切都很好,但

import {AuthService} from '../services/auth.service'; (in protected.directive.ts) 

不等於

import {AuthService} from '../Services/auth.service'; (in main.ts) 

是的,這是愚蠢的,但它提出的依賴注入是不可能的。