javascript - 以角度更改特定页面上的导航栏背景颜色
问题描述
当我访问特定页面(即联系页面)时,我一直在尝试以不同的方式更改导航栏的背景颜色 - 我已经查看了 ngclasses 以及尝试访问导航但没有运气的不同方式,根据其他 SO 帖子和 angular 文档。所以我想我会在这里发帖。这是我一直在玩的当前代码
navbar.component.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector : 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls : ['./navbar.component.scss'],
// template: '<img src="assets/img/wr-logo.png">'
template: `
<nav class="navbar navbar-expand-md navbar-fixed-top navbar-light bg-white main-nav" id="navbar navbar-change">
<div class="container">
<div class="navbar-collapse-nil collapse-nil nav-content order-1">
<ul class="nav navbar-nav">
<li class="nav-item active">
<a class="nav-link" routerLink="/home/" id="imagelogo"></a>
</li>
</ul>
</div>
<ul class="nav navbar-nav text-nowrap flex-row mx-md-auto order-2 order-md-2" id="center-nav-item">
<div id="hoverDrop">
<div class="dropdown">
<button class="dropbtn">{{product_nav}}</button>
<div class="dropdown-content">
<a routerLink="/hours-of-rest/">{{hor_nav}}</a>
<a routerLink="/on-leave/">{{leave_nav}}</a>
</div>
</div>
</div>
<li class="nav-item">
<a class="nav-link" routerLink="/tour/">{{tour_nav}}</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="/pricing/">{{pricing_nav}}</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="/resources/">{{resources_nav}}</a>
</li>
</ul>
<div class="ml-auto navbar-collapse-nil collapse-nil nav-content order-3 order-md-3" id="right-nav-item">
<ul class="ml-auto nav navbar-nav">
<li class="nav-item" onclick="blueNav">
<a class="nav-link" routerLink="/contact/" id="contact-nav-element" routerLinkActive="blue-active-link" [routerLinkActiveOptions]="{exact:
true}">{{contact_nav}}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://google.com/" id="login-nav-element">{{login_nav}} <i class="fa fa-arrow-right" aria-hidden="true"></i></a>
</li>
</ul>
</div>
</div>
</nav>
`
})
export class NavbarComponent implements OnInit {
product_nav:string;
hor_nav:string;
leave_nav:string;
tour_nav:string;
pricing_nav:string;
resources_nav:string;
contact_nav:string;
login_nav:string;
constructor() {
}
ngOnInit() {
this.product_nav = 'Product';
this.hor_nav = 'HoR';
this.leave_nav = 'Leave';
this.tour_nav = 'Tour';
this.pricing_nav = 'Pricing';
this.resources_nav = 'Resources';
this.contact_nav = 'Contact';
this.login_nav = 'Login';
/* When the user scrolls down, hide the navbar. When the user scrolls up, show the navbar */
var prevScrollpos = window.pageYOffset;
window.onscroll = function() {
var currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos) {
document.getElementById("navbar").style.top = "0";
} else {
document.getElementById("navbar").style.top = "-50px";
}
prevScrollpos = currentScrollPos;
}
// window.onclick =
// function blueNav(){
// var blueTop = document.getElementByTagName("navbar");
// var i;
// for (i = 0; i < blueTop.length; i++) {
// blueTop[i].style.backgroundColor = "blue";
// }
// }
window.onclick =
function blueNav(){
var blueTop = document.getElementById("navbar");
var i;
for (i = 0; i < blueTop.length; i++) {
blueTop[i].style.backgroundColor = "blue";
}
}
}
}
任何想法表示赞赏
解决方案
您可以在此处使用主题。创建一个服务并在那里添加一个主题。
class service {
public changeNavColor: subject = new Subject<any>();
}
现在,将此服务注入您要使用它的所有页面/组件以及导航栏组件中。
现在在不同组件调用的 ngOnInit 生命周期钩子中
this.service.changeNavColor.next('red');
使用您要在导航栏中设置的颜色。
在导航栏组件中,
this.service.changeNavColor.subscribe((color) => {
this.navColor = color;
})
这将在导航栏组件中设置属性,您可以使用 ngStyle 绑定或 style.background 绑定在导航栏组件 html 中使用该属性。
现在,当组件加载时,它会将颜色值传递给导航栏并设置其背景。
希望这可以帮助。
推荐阅读
- c# - gmail 日历在主机上不起作用(asp.net mvc)
- java - Java: Trying to take keyboard input and evaluate it in an if/else condition to set a boolean value to true or false
- html - 为什么我的字体大小在我的 h1、h2、p 中不起作用
- qlabel - Pyqt5 如何在 QtabWidget 中的 Qlabel 中设置文本
- windows - 我可以像在 Windows 中一样在 linux 中创建过滤器驱动程序吗?
- sharepoint - 如果我正确处理 SPSite 和 SPweb,我不是
- php - 网站用户如何删除输入值?
- kubernetes - OpenShift 角色创建配额
- x11 - Could someone explain this section about events in Xlib?
- r - How to "sort(unique(x))" or faster method on many variables with data.table?