想象一下像LoggingService
这样的服务,它有一个log(msg: string)
方法。使用Angular 2依赖注入,很容易在组件中拥有服务实例。但是,我找不到一个可靠的解决方案,让LoggingService在任何不是Angular 2组件,服务等的普通类中。
E.g。该应用程序有一个文件blacklist.ts,其中包含:
export class Blacklist {
isBlacklisted(name: string): boolean {
let result = false;
if(value == "Alice" || value == "Bob") {
result = true;
LoggingService.log("Name'" + name + "' is blacklisted");
}
return result;
}
}
假设LoggingService
中提供了AppModule
。如何在上面的示例中检索服务实例?
答案 0 :(得分:0)
LoggingService都是静态类 这样你就可以在没有实例的情况下使用它 或者你需要和它的实例来调用方法
整个目的是支持可重用性 像这样使用
import {LoggingService} from 'path/to/service'
export class Blacklist {
private loggingService:LoggingService;
isBlacklisted(name: string): boolean {
let result = false;
if(value == "Alice" || value == "Bob") {
result = true;
this.loggingService.log("Name'" + name + "' is blacklisted");
}
return result;
}
}
答案 1 :(得分:0)
我现在将TypeScript decorators用于此目的:
export class Blacklist {
@logger
logger: LoggingService;
isBlacklisted(name: string): boolean {
let result = false;
if(value == "Alice" || value == "Bob") {
result = true;
this.logger.log("Name'" + name + "' is blacklisted");
}
return result;
}
}
答案 2 :(得分:-2)
将其导入组件
import {LoggingService} from 'path/to/service';
将它放在构造函数中:
constructor(private logSvc: LoggingService){}