Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过angular指令访问以前的同级?_Javascript_Angular_Typescript_Angularjs Directive_Frontend - Fatal编程技术网

Javascript 如何通过angular指令访问以前的同级?

Javascript 如何通过angular指令访问以前的同级?,javascript,angular,typescript,angularjs-directive,frontend,Javascript,Angular,Typescript,Angularjs Directive,Frontend,目前,我正在使用ELEMENTREF通过redenrr2访问DOM。以下是一个基本示例: import { Directive, Renderer2, ElementRef } from '@angular/core'; @Directive({ selector: '[appHighlight]' }) export class HighlightDirective { constructor(private renderer: Renderer2, private el: Ele

目前,我正在使用ELEMENTREF通过redenrr2访问DOM。以下是一个基本示例:

import { Directive, Renderer2, ElementRef } from '@angular/core';

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective {

  constructor(private renderer: Renderer2, private el: ElementRef) {
    this.renderer.setStyle(this.el.nativeElement, 'background', 'yellow');
  }

}
上面的代码只是一个将语法高亮显示为黄色的测试

但是,我需要知道如何访问上一个元素并捕获其宽度以移动到左侧样式属性

前兄弟的宽度是400px。当前元素的左边是400px


我指望合作。

您可以获得父元素:

让parent=this.renderer.parentNodethis.elementRef.nativeElement

然后以某种方式选择他的孩子,也许给他们递增的ID:

让sibling=parent.querySelector'child5'

然后你就有了兄弟姐妹的宽度:

让宽度=同级.offsetWidth


希望这能有所帮助。

您不能,您需要一个父指令来管理子指令,或者使用共享服务来触发来自同级的另一个指令。在RenderR2中,我有一个抽象的nextSibling节点:any:any。例如,它会有类似于抓取上一个sibling的东西吗?如果你理解正确,你有一个类似列表的东西,你希望每个下一个元素兄弟的左属性等于上一个sibling的宽度吗?就是这样的@ⅩⅩ砦砦砦砦砦砦砦砦砦砦!您需要这样做,但您必须与此场景抗争。您可以尝试将哥哥作为输入传递给行中的下一个,这应该可以做到。您正在生成此错误:错误类型错误:无法读取null的属性“querySelector”;在新的HighlightDirective highlight.directive.ts:10;在createClass core.js:9303Now,如何从父级中选择所有子级。。。如果我能做到这一点,我就能解决我的问题。