2016-01-20 54 views
1

我想在一個小的項目中使用NgZone,但無法弄清楚如何將其引入。angular.io中的文檔說它們是用於JavaScript,但似乎使用打字稿。如何將Angular2的NgZone帶入沒有打字稿的類中?

Angular2 docs on NgZone

而且我發現每一個例子似乎與文檔,即走,打字稿:

Plnkr example of NgZone

export class NgZoneDemo { 
    progress: number = 0; 
    label: string; 

    constructor(private _ngZone: NgZone) {} 

我們不使用打字稿,我想不通如何將NgZone帶入我的課堂來拯救我的生命。爲了使它在不使用打字機的項目中可用,我需要在plunkr中更改哪些內容?

+0

你用什麼es5? –

+0

@VladoTesanovic es6 – Mike

回答

2

可以使用ng.core.NgZone對象,並注入到你的組件,如下所述:

var Cmp = ng.core. 
    Component({ 
    selector: 'cmp' 
    }). 
    View({ 
    template: '<div>Test</div>' 
    }). 
    Class({ 
    constructor: [ng.core.NgZone, function(zone) { 
     // Use the zone 
    }] 
    }); 

希望它可以幫助你, 蒂埃裏

+0

在示例中使用'zone.run()'是不必要的,因爲它將代碼帶回到Angular 2框架(它已經在)。要顯示'zone.run()'的功能,你必須首先使用'zone.runOutsideAngular()'來獲得Angular的NgZone之外的位置,然後你可以使用'zone.run()'返回。 –

+0

問題只是關於如何將'NgZone'注入構造函數而不是如何使用它......不是嗎? –

+0

否則我同意你;-) –

1

認定合格Ngzone到構造函數使用靜態前面參數數組列出了要傳遞的參數。我昨晚試過了這個,但是沒有意識到爲什麼或者那個情況如何。無論如何,一旦我做了,它現在在構造函數中可用。

export class NgZoneDemo { 
    progress: number = 0; 
    label: string; 

    static parameters = [NgZone]; 
    constructor(ngZone) { 
    // use here 
    } 
    ... 
}