当前位置:  开发笔记 > 编程语言 > 正文

Angular 2.x选择DOM元素

如何解决《Angular2.x选择DOM元素》经验,为你挑选了3个好方法。

我知道它应该很容易但是角度2.0还没有很多例子..

在某些情况下,在我的一个组件中,我需要在body标签上添加class.但是我的应用程序比身体更深,所以我需要类似的东西

angular.element('body').addClass('fixed');

但在Angular 2.0 ..

顺便说一句,我知道我可以以某种方式引导我的应用程序包含body标签,但我认为在其他一些情况下我还是需要选择一些元素,所以我需要一个解决方案如何做这个简单的任务 - "选择元素并添加类到它"



1> Günter Zöchb..:

更新

我不确定DOMRC是否真的支持.相关陈述不是很清楚.就像是

DOM仅供内部使用.直接访问DOM或使用自定义渲染器.

我没有看到如何实现自定义渲染器或如何根据当前平台(webworker,服务器,DOM线程)提供实现.

更新 这似乎是Angular2的方式

import { DOM } from 'angular2/src/platform/dom/dom_adapter';

DOM.addClass(DOM.query("body"), 'fixed');

导入.../src/...风险由您自行承担..../src/...被视为私人实施,您不能指望任何保证API不会更改,恕不另行通知.

我在Dart中尝试过它并且工作正常(不确定上面的TS导入是否正确).在Dart DOM中导出package:angular2/angular2.dart

原版的

如果要访问Angular应用程序根目录之外的DOM元素,只需使用document.querySelector(),不需要涉及Angular.


我不这么认为.Angular2是关于避免直接DOM访问以确保一切正在与Web工作者和服务器端呈现一起工作.

2> JDTLH9..:

截至Angular2 Version 2.0.0-beta.17.

Angular2中的属性指令可以很好地为您完成此操作.

请参阅本普拉克写的打字稿.这很符合您的要求.

指令文件my-highlight.ts有以下行:

this.renderer.setElementClass(this.element, "red", true);

这将在元素上设置CSS类.

虽然template.html具有使用指令修饰的实际元素[myHighlight]:

Mouseover to highlight me!

对我来说,这对问题提供了最少的黑客答案,而不依赖于jqLit​​e.



3> Stefan Rein..:

截至angular 2.4你应该注入DOCUMENT并且不与任何适配器交互:

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

进一步阅读:https://github.com/angular/angular/issues/8509

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有