すべてのアプリのためのサービスが、それは(私がAngular2でES6を使用しています)の書き込みにかなり不快です:すべてのコンポーネントやサービスに角度2 1、私は私のAngular2アプリでロガーサービスを使用する必要が
import { LoggerService } from '../services/logger-service';
...
constructor(@Inject(LoggerService) logger) {
this.logger = logger;
}
私はそれを使いたい。グローバルにLoggerService
を注入してアプリ内のどこでも使用する方法はありますか?私はそれを行う方法を見つけていない。
これは私のロガーがどのように見えるかです:
私はそれを使用したいimport {Injectable} from '~/node_modules/@angular/core';
@Injectable()
export class LoggerService {
constructor() {
if (appConfig.dev) {
this.log = console.log.bind(console);
this.error = console.error.bind(console);
this.info = console.info.bind(console);
} else {
this.log = this.error = this.info =() => null;
}
}
}
とコンポーネントの例:あなたがしようとしている場合の解決策の
import { Component, Inject } from '~/node_modules/@angular/core';
import { LoggerService } from '../services/logger-service';
@Component({
'selector': 'activities',
'template': template,
'styles': [style]
})
export class ActivitiesComponent {
constructor(@Inject(LoggerService) logger){
this.logger = logger;
}
someAction() {
this.logger.log('hello');
}
}
ありハックがありますが、私はあなたがそれらを使用し、ちょうどあなたがそれを必要な場所にそれを注入してはならないと思います。 –
継承の使用はどうですか? – echonax
@GünterZöchbauerあなたはいくつかの例を教えていただけますか?たとえそれがハッキングの方法であっても、それは将来の読者と私に角度2 DIスチレンをより良く理解させるのに役立つでしょうか? – kemsbe