Javascript 角度4 DOM操作和搜索

Javascript 角度4 DOM操作和搜索,javascript,jquery,angular,Javascript,Jquery,Angular,Angular已经为DOM操作提供了支持,但我正在考虑对这些函数使用jQuery:Nestest()/children() 所以, 是否有一个角度函数与jQuery的函数Nestest()相同,后者基本上只返回元素 在Angular中,这些函数是否有其他替代方法,而不用编写本机JS/TS操作来实现这些功能,就像jQuery一样,后者做的是脏活?或者继续jQuery可以吗(反正我不处理模板操作)?谢谢 更新 getComputerStyle可以轻松复制jquery的css() 关于jquery的选

Angular已经为DOM操作提供了支持,但我正在考虑对这些函数使用jQuery:Nestest()/children()

所以, 是否有一个角度函数与jQuery的函数Nestest()相同,后者基本上只返回元素

在Angular中,这些函数是否有其他替代方法,而不用编写本机JS/TS操作来实现这些功能,就像jQuery一样,后者做的是脏活?或者继续jQuery可以吗(反正我不处理模板操作)?谢谢

更新

  • getComputerStyle可以轻松复制jquery的css()
  • 关于jquery的选择器:
    closest()

  • 如果存在,应避免在Angular中使用jquery,下面是一个示例:

    @Component({
        selector: 'sample',
        template: `
            <span #tref>I am span</span>
        `
    })
    export class SampleComponent implements AfterViewInit {
        @ViewChild("tref") tref: ElementRef;
    
        ngAfterViewInit(): void {
            // outputs `I am span`
            console.log(this.tref.nativeElement);
        }
    }
    
    @组件({
    选择器:“示例”,
    模板:`
    我是斯潘
    `
    })
    导出类SampleComponent实现AfterViewInit{
    @ViewChild(“tref”)tref:ElementRef;
    ngAfterViewInit():void{
    //我是斯潘`
    console.log(this.tref.nativeElement);
    }
    }
    

    要搜索的关键字是Elementref和Viewchild,与Angular为DOM操作公开的关键字相比,JQuery非常强大。有时,在角度应用程序中,它非常有用且很难忽略

    您可以在项目中安装它,但唯一的问题是jQuery可以在不封装的情况下全局访问DOM,因此如果您想使用良好的实践,您应该只访问/修改您正在使用jQuery的组件的DOM,如果您想访问/修改组件外部的DOM,您应该将所需的数据作为@Input传递,或者使用事件作为@Output通知其他组件

    如果您已经全局安装了变量$,请不要忘记在组件中声明它,因为typescript不知道$是什么

    declare var $ :any;
    

    使用Jquery并不是一种有角度的方式,但在某些情况下,我们的双手会被束缚,只有在这些情况下才使用Jquery。使用@viewchild或@viewchildren获取DOM元素

    span我的名字是XXX#name>

    在.ts文件中 @ViewChildren('name')组件:QueryList; log(this.components.toArray())


    您将能够获得DOM。如果只需要DOm元素,请使用@viewchild。对于@viewchildren,它将返回使用相同选择器或模板引用变量的所有DOM元素的数组。

    像这样的大多数情况都是通过指令、绑定和ViewChild(ren)decorator解决的,因此可能存在XY问题。这个问题不包含任何真实案例的信息,而且范围太广。不,除非必要,否则不能继续jQuery。关于jQuery+Angular的帖子很多,我不知道为什么有人应该导入像jQuery这样的孔库,而只使用一些方法。在您的例子中,jQuery的
    css()
    closest()
    方法很容易自己实现,因此不需要导入孔库,除非库是可树摇动的。哦,所以我确实需要实现这一点。我希望angular具有这些内置功能。我只是不想写已经存在的函数。谢谢,关于angular的工作流程。是否更倾向于以参考为基础?问:从div中,id为x的最近父/祖先元素是什么是错误的吗?是的。我很难决定是否应该像其他人建议的那样同时使用它们,我在一些网站上读到不建议这样做。我不想再写jquery closest()逻辑了。我只是修改了我的答案,详细说明了为什么不推荐jquery。你必须评估商品和不良品,如果你使用它,至少你需要知道什么是不能做的。