0

angle2用のリモートロガーを作成しましたが正常に動作します。私は今、独自のnpmライブラリとして公開し、利用可能にするのに苦労しています。私はngx-translateモジュールの設定に慣れてきました。私はそうのようにそれ自身のモジュールにこのアプローチを適応しようとしたangular2モジュールのビルドとパブリッシュ

import { 
    LOG4NG_SERVICE_HANDLER_PROVIDERS, 
    LOG4NG_SERVICE_CONFIG, 
    LOG4NG_ERROR_HANDLER_PROVIDERS, 
    LOG4NG_ERROR_HANDLER_CONFIG } from './log4ng.service'; 
import * as message from './log4ng.service/message'; 

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule 
    ], 
    providers: [ 
    LOG4NG_SERVICE_HANDLER_PROVIDERS, 
    { 
     provide: LOG4NG_SERVICE_CONFIG, 
     useValue: { 
     recipients: [ 
      { 
      classname: 'ConsoleWriter', 
      params: { 
       name: 'Angular2 Test App::Console Logger' 
      } 
      } 
     ], 
     filters: [ /** filter definition **/ ] 
     } 
    }, 

    LOG4NG_ERROR_HANDLER_PROVIDERS, 
    { 
     provide: LOG4NG_ERROR_HANDLER_CONFIG, 
     useValue: { 
     rethrowError: false, 
     unwrapError: false 
     } 
    } 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

import { NgModule, ModuleWithProviders } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { 
    Log4ngService, 
    ILog4ngServiceConfig, 
    LOG4NG_SERVICE_CONFIG, 
    LOG4NG_SERVICE_HANDLER_PROVIDERS, 
    ErrorHandlerLoggingService, 
    LOG4NG_ERROR_HANDLER_CONFIG, 
    LOG4NG_ERROR_HANDLER_PROVIDERS 
} from './src'; 

export * from './src'; 

@NgModule({ 
    imports: [ 
    CommonModule 
    ], 
    providers: [ 
    Log4ngService, 
    ErrorHandlerLoggingService 
    ] 
}) 
export class Log4ngModule { 
    static forRoot(config: ILog4ngServiceConfig = LOG4NG_SERVICE_CONFIG): ModuleWithProviders { 
     return { 
      ngModule: Log4ngModule, 
      providers: LOG4NG_SERVICE_HANDLER_PROVIDERS 
     }; 
    } 

    static forChild(config: ILog4ngServiceConfig = LOG4NG_SERVICE_CONFIG): ModuleWithProviders { 
     return { 
      ngModule: Log4ngModule, 
      providers: LOG4NG_SERVICE_HANDLER_PROVIDERS 
     }; 
    } 
} 

私は内部的に使用していますロガーの一般的なセットアップはBen Nadel's Custom Error Handler Postで説明したものと類似しています

私はこのモジュールを使用するデモアプリケーションを作成し、npm linkを使用してlibaryをローカルで使用しました。私は理解していない

Error: Can't resolve all parameters for Log4ngService: (?) 

が、私の理解のためにあるため、必要なすべてのDIトークンが正しく設定されている:それは完全に構築しながらデモアプリケーションでそれを使用しようとすると、私はランタイムエラーを取得します。

あなたはこののgitリポジトリのDEV-ブランチにコードを見つけることができます。https://github.com/LarsKumbier/log4ng/tree/dev

すべてのヘルプやヒント感謝 - 事前に感謝を!

+0

のように工場を使用することができますか? –

+0

ええ、それらはngx-translateの残り物であり、問​​題の解決にいくつか試みます。それらを削除する必要があります。 – Lars

答えて

0

問題はLog4ngServiceにあるので、あなたがforRootとforChildを使用しているなぜあなたはそのパラメータ `config`をを使用していないので、私は理解していなかったものを、この

/** Log4ngService factory */ 
    export function Log4ngServiceFactory(config: ILog4ngServiceConfig) { 
     return new Log4ngService (config); 
    } 

    @NgModule({ 
     imports: [ 
     CommonModule 
     ], 
     providers: [ 
     ErrorHandlerLoggingService 
     ] 
    }) 
    export class Log4ngModule { 
     static forRoot(config: ILog4ngServiceConfig = LOG4NG_SERVICE_CONFIG): ModuleWithProviders { 
       return { 
        ngModule: Log4ngModule, 
        providers: [ 
        { 
         provide: Log4ngService, 
         useFactory: Log4ngServiceFactory, 
         deps : [config] 
        } 
        ] 
       }; 
      } 
    } 
関連する問題