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