在Angular 2 RC中操作DOM的正确方法是什么?
例如,我正在构建一个用于调试目的的服务来交换文档中的.css文件引用。
在Angular 2 RC之前,可以使用来自DOM操作的BrowserDomAdapter
,如下所示:
import { BrowserDomAdapter } from 'angular2/platform/browser';
...
constructor(private domAdapter: BrowserDomAdapter) {
}
...
const document = this.domAdapter.defaultDoc();
这受到Title
服务(现在位于@angular/platform-browser
)的启发。似乎Title
服务仍然在内部使用它,但它不再导出以供在Angular之外使用。即。
import { BrowserDomAdapter } from "@angular/platform-browser";
结果:
Module '".../@angular/platform-browser/index"' has no exported member 'BrowserDomAdapter'
答案 0 :(得分:5)
import {BrowserDomAdapter} from '@angular/platform-browser/src/browser/browser_adapter';
<强>更新:(评语)强>
issue on GitHub解释说删除确实存在 意外,所以希望它会回到rc2。 - @paul
答案 1 :(得分: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)
进入您的组件并使用它。