2016-05-02 14 views
3

私は角度2でenableProdMode()を呼び出す最良の方法が、環境ごとにコメントアウトする必要はないと判断するようにしています。私はそれがbootstrapの前に呼び出される必要があることを知っていますが、私は?devmodeのようなURLパラメータを使用してdevmodeをオンにして、開発のためにdevmodeで実行できるようにしたいと思います私はGETパラメータが存在しないと表示し、enableProdMode()を呼び出します。angular2でenableProdModeを呼び出すための最良のパターン

問題は、私が前にブートストラップにURLパラメータを引き出すために、任意angular2コードを使用することはできませんが...

誰でも(ブートストラップする前、または他のいずれか)enableProdMode()を起動する方法上の任意の提案を持っていますのでコードのテストと提供のためのコード行にはコメントアウトしていませんか?

if (window.location.href.indexOf('devmode') < 0) { 
    enableProdMode(); 
} 

を傷つけないように

答えて

1

初期化は、とにかく、プラットフォームに依存しています。

+0

ありがとうございます!私は具体的に何をしたのかについてもう少し詳細な答えを出すつもりですが、これは私にそれを導いた根本的な答えでした。 – JimB

1

(Gunterの答えに基づいて)私がやったことは、私がdevmodeかhrefに基づいているかを知るために照会できる「グローバル」サービスを定義することでした。

main.ts

let developmentMode: boolean = true; 
if (window.location.href.indexOf('devmode') < 0) { 
    // devmode not found in the URL ... we are in prod mode 
    developmentMode = false; 
    enableProdMode(); 
} 

bootstrap(HomeComponent, [ 
    HTTP_PROVIDERS, 
    ROUTER_PROVIDERS, 
    // initialize our global class singleton and set development mode 
    provide(Global, { 
     useFactory:() => { 
      let global: Global = new Global(); 
      if (developmentMode) { 
       global.enableDevelopmentMode(); 
      } 
      return global; 
     } 
    }), 
    provide(Window, { useValue: window }), 
    provide(APP_BASE_HREF, { useValue: '/' }) 
]); 

global.ts

import {Injectable} from 'angular2/core'; 

@Injectable() 
export class Global { 
    private devMode: boolean = false; 

    constructor() { 
    } 

    isDevelopmentMode() { 
     return this.devMode; 
    } 

    enableDevelopmentMode() { 
     this.devMode = true; 
    } 
} 

私は「二重否定」ロジックで考えているように感じるので、私のソリューションは、私には逆方向ビットを感じているが、それは唯一のためです彼らが気にしている場合、ブートストラップとアプリの内部の誰もが簡単にGlobal.isDevelopmentMode()を呼び出すことができます。

0

注:

import { isDevMode } from '@angular/core' 

console.log('Development mode: ' + isDevMode()); 

注:enableProdMode()が呼び出される前に、これが呼び出されてはならないプロダクションモードが有効にされたかどうかを決定するための機能で構築されたが既にあります。

はい私はこれが直接的な答えではないことを認識していますが、有効にする場所を決めたら、これは便利です。

関連する問題