Javascript 角度2主机侦听器更改分区高度

Javascript 角度2主机侦听器更改分区高度,javascript,css,angular,Javascript,Css,Angular,我在Angular 2中读了过去几个小时关于事件监听器的内容,但我认为那里的文档非常缺乏 我想将不同div组(在ngFor中创建)的高度设置为具有最大高度的组。有点像 我知道scope和$watch已经不存在了。所以我试着用Host Listener来做,但是我找不到任何好的文档。有许多关于事件的教程,但没有其他可能的事件。我需要像$watch或onChange这样的东西。(没有输入字段,基本元素)基本上任何关于可能事件名称的文档都会有所帮助 最后,在angular2中还有一个上述链接的示例 P

我在Angular 2中读了过去几个小时关于事件监听器的内容,但我认为那里的文档非常缺乏

我想将不同div组(在ngFor中创建)的高度设置为具有最大高度的组。有点像

我知道scope和
$watch
已经不存在了。所以我试着用Host Listener来做,但是我找不到任何好的文档。有许多关于事件的教程,但没有其他可能的事件。我需要像$watch或onChange这样的东西。(没有输入字段,基本元素)基本上任何关于可能事件名称的文档都会有所帮助

最后,在angular2中还有一个上述链接的示例

PS:发现
'window:resize'
'div:resize'
不工作

编辑:在maximus的帮助下,我完成了它,下面是工作代码

创建了一个指令文件:comments.directive.ts

而我只是在NG模块中导入了它

HTML部分:

<div comments [ngStyle]="style">

如果我做的部分,使所有的高度相等,基于最大的,我会更新它

我知道scope和$watch已经不存在了

Angular.js在运行摘要时触发观察者。Angular也有类似的功能,它在运行digest时会触发
ngDoCheck
。阅读更多

与您为
Angular.js所展示的示例进行类比,您可以在Angular中按照以下几行做一些事情:

@Directive({
   selector: '[HeightSetter]'
})
class HeightSetter {
   style: any;

   constructor(private element: elementRef) {

   }

   ngDoCheck() {
     this.style = { //scope variable style, shared with our controller
         height:this.element.nativeElement.offsetHeight+'px', //set the height in style to our elements height
         width:this.element.nativeElement.offsetWidth+'px' //same with width
     };
   }
}
html


您有没有看过MutationObserver-?您根本不可能想要或需要这样做。本质上,您正在尝试管理页面布局,但这是HTML和CSS的工作。如果你能提供一个简单的例子来说明你想做什么,我相信这里会有人帮你演示如何用CSS来做。@torazaburo我知道这通常是CSS的一部分,在正常情况下,使用flex box很容易做到。在我的情况下,页面布局是基于我从数据库中检索的数据而设计的。因此,我必须根据接收到的元素更改布局。示例:3列,每个列包含评论、新闻和其他内容(在单独的行中)。根据注释最多的块,所有的注释框应具有相同的高度。请参见。它们的父项不相同。不管怎样都可以,别担心。可以了,换成
@Directive({
   selector: '[HeightSetter]'
})
class HeightSetter {
   style: any;

   constructor(private element: elementRef) {

   }

   ngDoCheck() {
     this.style = { //scope variable style, shared with our controller
         height:this.element.nativeElement.offsetHeight+'px', //set the height in style to our elements height
         width:this.element.nativeElement.offsetWidth+'px' //same with width
     };
   }
}
<span HeightSetter [ngStyle]="style"></span>