angular - 从其他组件Angular 10的按钮添加不同的类
问题描述
我正在尝试从其他组件的三个按钮向 div 添加类。当我在同一个组件中时,它可以正常工作,问题是当 div 在一个组件中而按钮在另一个组件中时。
- 导航栏组件:
<nav class="c-navbar" aria-label="Navegacion principal">
<ul class="c-navbar__list">
<li class="c-navbar__item">
<a [routerLink]="['/one']" routerLinkActive="is-active" (click)="theme = 't-blue'" class="c-navbar__link">one</a>
</li>
<li class="c-navbar__item">
<a [routerLink]="['/two']" routerLinkActive="is-active" (click)="theme = 't-red'" class="c-navbar__link">two</a>
</li>
<li class="c-navbar__item">
<a [routerLink]="['/three']" routerLinkActive="is-active" (click)="theme = 't-green'" class="c-navbar__link">three</a>
</li>
</ul>
</nav>
- 应用组件:
<div [ngClass]="theme" class="o-wrapper">
<app-navbar></app-navbar>
<router-outlet></router-outlet>
</div>
- 导航栏组件 ts:
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./../../../scss/components/_c-navbar.scss']
})
export class NavbarComponent implements OnInit {
theme: string
constructor() {
}
ngOnInit(): void {
}
}
解决方案
目前您正在尝试访问和更新导航栏组件内的主题变量,这不会更新主应用程序组件主题变量。您应该使用 Eventemittor 向应用程序组件发出一些输出,然后更新应用程序组件内的主题变量。
您可以参考以下链接了解更多使用 Eventemitters 的详细信息
推荐阅读
- asp.net - 仅在即将到期时获取访问令牌的模式
- python-3.x - How to hanlde array in python data frame for xml string
- javascript - 当用户以角度关闭选项卡时调用函数
- flutter - 颤振医生没问题,但是在我的控制台上显示“没有找到名称或 ID 匹配‘emulator-5554’的设备”
- angular - 通过 Azure Pipeline 构建 .Net 5 Web 应用程序(使用 Angular)时出错
- java - java.lang.NoSuchMethodError : org.mockito.MockitoAnnotation.openMocks
- python - 如何从 django 模型中打印过滤后的结果
- python - 如何阅读这个修改后的unet?
- python-3.x - 在 Beautiful Soup 中的一行中查找字符串
- python - 无法导入“pandas_profiling”模块