是否可以使用指令在同一组件内均衡非兄弟元素的高度?



<app-comp>
<div class="box">
<div class="appleA" equalizeHeight [equal-height-id]="'a1'"></div>
</div>
<div class="box">
<div class="appleB" equalizeHeight [equal-height-id]="'a1'"></div>
</div>
</app-comp>

在这里我试图做一个指令,这被称为'equalizeHeight',我希望它会像这样工作:

"如果有另一个元素(在同一组件中)具有'equalizeHeight'指令,并且具有相同的输入'equal-height-id'值,则均衡它们的高度。">

有可能吗?

我试过,但卡住了如何访问另一个元素(它有相同的指令):(

这可能吗?

绝对可能。虽然绝对不是最理想的。我认为你可能应该重新考虑设计,或者为什么这不能用css来实现,以确保你确实需要这样处理。

您还应该限制自己使用可能导致回流的测量方法。我认为你只能使用intersectionobserver——尽管也可能有其他的解决方案。

请注意,即使没有由于测量而导致回流,这也会变得很脏,特别是当你有很多元素与一个"id"连接时,除非你找到一种方法来同步调整元素的大小,以便它们出现在一个帧中(例如使用沿着requestAnimationFrame()行的东西)。

我试过,但卡住了如何访问另一个元素(具有相同的指令):(

你可能想要一个被注入到指令中的服务,但在模块级或组件级提供(取决于你的需要)。该服务将负责存储不同id的测量值,并在添加新测量值时发出更改。该指令将订阅服务中存储的度量值的更改,并相应地调整底层元素的大小。