【发布时间】:2019-04-02 11:36:07
【问题描述】:
我正在尝试在 Angular 中创建一个具有可切换宽度值的导航菜单。在我的资产文件夹中,我有一个 variables.scss 文件,其中包含捆绑在一个文件中的所有变量,以便于访问。我的 variables.scss 看起来像这样:
//global variables
$globalNavWidth: 250px;
导航 Angular 组件有自己的名为 navbar.scss 的样式表,它的 width 属性链接到一个变量,如下所示:
.navbar{
width: $globalNavWidth;
我的文件夹结构看起来像这样。
我的导航中有一个按钮,点击时会触发“toggleNavWidth()”功能。有什么办法可以通过这个 toggleNavWidth() 函数更改全局变量 $globalNavWidth?
【问题讨论】:
-
SCSS是一个预处理器,这意味着值$globalNavWidth仅在从scss编译到css期间可用。您应该使用ElementRef在运行时更改navbarcss 属性。 -
检查此解决方案。我想这就是你想要的。 stackoverflow.com/questions/33328347/…
-
@ashish.gd 我还需要其他组件中的 $globalNavWidth(以通过对 $globalNavWidth 所做的更改来缩放它们) ElementRef 中是否有可以解决此问题的功能?或者我应该拆分我的变量以便隔离 $globalNavWidth 并且我可以用硬编码值替换它?
-
因为您需要基于
.navbarcss 宽度属性的更改来更改应用程序范围的 css。请查看HostBinding。此链接也将有助于理解各种选项:blog.angular-university.io/angular-host-context