2016-05-06 4 views
8

Angular 2 RCでDOMを操作する適切な方法は何ですか?Angular 2のDOMへのアクセスRC

たとえば、ドキュメント内の.cssファイル参照をスワップアウトするデバッグ用のサービスを構築しています。

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

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

const document = this.domAdapter.defaultDoc(); 

これは(今@angular/platform-browser中)Titleサービスに触発されました:

角度2 RCに先立ち、そうのように、DOM操作からBrowserDomAdapterを使用することが可能でした。 Titleサービスでは依然として内部で使用されているようですが、Angular以外で使用するためにエクスポートされることはありません。私。

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

これはエクスポートされておらず、代替手段もありません。私はバグレポートを作成して再度エクスポートします。それはコメントで数回言及されたが、それは外部の開発者には使用されるべきではないと言われていたが、代わりに何を使用すべきか説明を見たことはなかった。 –

+1

ありがとう、@GünterZöchbauer。私はGitHubを試してみる。そして答えに感謝、あなたはAngular2の獣です。 –

答えて

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

UPDATE::(コメント)

issue on GitHubは除去が実際に accidentaだったと説明している中

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

結果それではrc2に戻ってくることを願っています。 - @paul私のような人々のために

+2

これは回避策に過ぎません。 'src/... 'からインポートすることは想定されていません。 –

+1

正確に。回避策ですおそらく彼らはそれをエクスポートすることを忘れていた、または何らかの理由でちょうどしなかった。 –

+3

GitHubの問題は削除が本当に偶然だったことを説明しているので、うまくいけばrc2に戻ってくるはずです。 https://github.com/angular/angular/issues/8509#issuecomment-217483301 – paul

3

angular 2.4でDOMを操作するための楽しみ:

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(); 
    } 
} 

あなたはどのアダプタを使用しないでください。これは実装の詳細なので使用しないでください。代わりに@Inject(DOCUMENT)をコンポーネントに入れて使用してください。

追加情報:https://github.com/angular/angular/issues/8509

+0

これはFalxのコメントのコピー/ペーストのようです:https://github.com/angular/angular/issues/8509#issuecomment-224703913 –

関連する問題