2016-05-06 18 views
8

Angular 2 RC'de DOM'ı işlemenin uygun yolu nedir? Örneğin, belgedeki .css dosya başvurularını değiştirmek için hata ayıklama amacıyla bir hizmet yapıyorum. Angular 2'de DOM'a Erişme RC

Açısal 2 RC önce, o kadar gibi, DOM manipülasyonlara gelen BrowserDomAdapter kullanmak mümkün oldu:

import { BrowserDomAdapter } from 'angular2/platform/browser'; 

... 
constructor(private domAdapter: BrowserDomAdapter) { 
} 
... 

const document = this.domAdapter.defaultDoc(); 

Bu (şimdi @angular/platform-browser olarak) Title hizmet esinlenmiş. Görünüşe göre Title hizmeti dahili olarak kullanıyor, ancak artık Angular dışında kullanılmak üzere ihraç edilmiyor. Yani

import { BrowserDomAdapter } from "@angular/platform-browser"; 

Sonuçlar içinde:

Module '".../@angular/platform-browser/index"' has no exported member 'BrowserDomAdapter' 
+1

Bu ihraç edilmez eminim ve alternatifi yok. Tekrar ihraç edilmesini sağlamak için bir hata raporu oluştururdum. Birkaç kez, harici geliştiriciler tarafından kullanılmaması gerektiği yorumlarında belirtilmişti, ancak bunun yerine başka ne kullanılması gerektiği konusunda bir açıklama görmedim. –

+1

Teşekkürler, @ GünterZöchbauer. GitHub'ı deneyeceğim. Ve cevap için teşekkürler, sen bir Angular2 canavarsın. –

cevap

5
import {BrowserDomAdapter} from '@angular/platform-browser/src/browser/browser_adapter'; 

GÜNCELLEME: (comment)

bir issue on GitHub kaldırma gerçekten accidenta olduğunu açıklıyor Umarım rc2'ye geri döner. - Benim gibi insanlar için @ Paul

+2

Bu yalnızca bir çözüm olabilir. "Src/..." kaynağından içe aktarmamız gerekmiyor çünkü bunun özel bir uygulama olduğu düşünülüyor. –

+1

Tam olarak. sadece bir çözüm. Belki de bunu ihraç etmeyi unuttular ya da bir sebepten ötürü yapmadılar. GitHub'daki bir sorun –

+3

'un kaldırılmasının gerçekten yanlışlıkla olduğunu açıklar, bu yüzden umarım rc2'ye geri dönecektir. https://github.com/angular/angular/issues/8509#issuecomment-217483301 – paul

3

, angular 2.4 DOM ile etkileşim için ileriye dönük:

import { Component, Inject } from '@angular/core'; 
import { DOCUMENT } from '@angular/platform-browser'; 

@Component({}) 
export class MyClass { 

    constructor (@Inject(DOCUMENT) private document) { } 

    doSomething() { 
     this.document.someMethodOfDocument(); 
    } 
} 

herhangi adaptör kullanmamalısınız. Bu uygulama detayıdır ve kullanılmamalıdır. Bunun yerine @Inject(DOCUMENT) bileşeninize ekleyin ve kullanın.

fazla okuma: https://github.com/angular/angular/issues/8509

+0

Bu, Falx'ın yorumunun bir kopyasına/yapıştırmasına benziyor: https://github.com/angular/angular/issues/8509#issuecomment-224703913 –