【问题标题】:Style through components not created通过未创建的组件设置样式
【发布时间】:2018-03-12 21:34:24
【问题描述】:

新问题:

所以,我正在寻找一种方法来切换两个名为 hotel-inhotel-out 的 css 类的显示。

这两个类将包含在我的所有 22 个组件中。 要切换显示,我使用了一个名为 inHotel 的变量,其中包含用户是否在酒店。

当变量为真时,hotel-in 将可见,hotel-out 将隐藏。

当变量为 false 时,hotel-out 将是 visible,并且hotel-in 被隐藏。

我怎样才能以最好的方式实现这一目标? 这是我可以在我的主控制器中执行的一般操作吗,它会加载所有组件?

或者我必须在 22+ 个控制器中的每一个中做一些特别的事情吗?


老问题:

在我的主要应用程序组件中,我有路由器插座,我有以下内容:

<style *ngIf="inHotel">

  .hotel-in {
    display:block;
  }

  .hotel-out {
    display:none;
  }
</style>

   <style *ngIf="inHotel == false">

  .hotel-in {
    display:none;
  }

  .hotel-out {
    display:block;
  }
</style>

但是在检查时,即使 inhotel 是假的,它也不会创建那种风格。

这个想法是一个函数将切换这个酒店。

其他组件中的所有内容都将有一个 div 类 hotel-outhotel-in 。根据酒店的等级/风格,这将是可见/不可见的。

但由于某种原因,它不会工作。

我需要做什么才能完成这项工作?

编辑 2:

我可以使用前面提到的 ngclass,并通过每个控制器/路由获取酒店状态。

但是在 PHP 和 angular1 中,我可以选择将那段样式代码放在主文件中(路由器插座所在的位置),它会按预期工作。

理想情况下,我只有一个地方将hotel-inhotel-out 的显示更改为切换display nonedisplay block

那么在其他路由/视图中具有hotel-inhotel-out 的所有内容都将根据id 行事。

编辑3:

在不同路径中的 html 样式示例。

<div class=hotel-in">You are in hotel , more html...</div>
<div class="hotel-out">Something completely diff here </div>

编辑3:

即使当我使用*ngIf 样式时,它也不会在页面上生成任何带有内容的acual 标签。

编辑4:

似乎我什至无法在 angular/angular-cli html 中发布样式标签。怎么会?以及如何制作才能制作样式标签?

由于某种原因,即使这也不会出现在页面上。

  <style>
.test {
  color:black; 
}
      </style>

【问题讨论】:

  • HI .. 你试过用 [NgClass] 代替 NgIf 吗?
  • 不,但这会做什么?那么我需要对我所有的酒店类做 ngClass,并在每个模块控制器中导入酒店状态?。
  • 是的@incognito 更新了这个问题,如果这有任何意义。
  • 我可以在 angular1 和 PHP(PHP ofc 中的其他方式)中这样做。 @incognito 是否有任何其他方式可以在两种样式状态之间切换并让我更轻松?
  • 最佳实践是@incognito?无论如何,它不会产生样式输出 atm :/ 。恐怕最佳做法是通过每个控制器/路线获取酒店状态。并使用 ngclass。但这是很多工作。

标签: javascript css angularjs angular


【解决方案1】:

如果样式规则是使用https://github.com/deanmcpherson/angular-inline-style 写在 html 页面本身内,您会看到更改了样式规则。

这个想法是在每次范围更改时重建样式规则,默认情况下,Angular 不提供此功能。但是我们可以编写一个指令链接到样式标签并根据范围重新编译它。

【讨论】:

  • 所以指令可以向服务器询问酒店状态并在需要时重新编译?
  • 是的,如果你可以将酒店状态保存在 $rootScope 中会更好,然后指令可以观察 $rootScope 变量并更新样式表。
  • 好主意。你能帮我创造吗?我们可以聊天。顺便说一句,它的角度是 2/4 :)
  • 我不太精通 angular 2,但我很乐意提供帮助。
  • 似乎因为我放弃了赏金并且我的rep 少于 100,我无法在 stackoverflow 上创建或聊天。你还有别的地方吗?
猜你喜欢
  • 1970-01-01
  • 2022-07-13
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多