Angular 5 - 为特定元素动态添加样式
Angular 5 - add style to specific element dynamically
我在我的项目中使用 Angular 5.2 并且是 angular 框架的新手。我的组件 html 看起来像这样:-
我想在 angular ts 代码中将 style="top:200px;" 动态添加到上面屏幕截图中带有 class="app-alerts" 的突出显示元素。具有 class "app-alerts" 的 div 元素被添加到渲染上的 DOM。
请建议代码更改。
根据我们的评论,您应该在生命周期挂钩后使用 document.querySelector
ngAfterViewInit() {
(document.querySelector('.app-alerts') as HTMLElement).style.top = '150px';
}
我来晚了,但是不!不要使用 DOCUMENT.QUERYSELECTOR。那不是你设计 Angular DOM 元素的方式!
<div [ngStyle]="{'top.px': divStyle}">
那么在你的组件中,你有
ngAfterViewInit() {
this.divStyle = 200;
}
我发现一个页面有很好的解释和示例代码,可以在 Angular 2+ 中动态添加样式。
Attach the style dynamically in Angular
我有同样的问题,我需要在用户滚动页面时滚动 div,并使用下面的代码解决了我的问题。
在您要捕获滚动的组件处:
import { HostListener } from '@angular/core';
@ViewChild('curtain') divCurtain: ElementRef;
export class ComponentX {
@HostListener('window:scroll', ['$event']) onScrollEvent($event) {
console.log(window.pageYOffset);
this.divCurtain.nativeElement.style.top = window.pageYOffset.toString().concat('px');
}
ngOnInit(): void { }
}
仅此而已,我没有创建任何指令或其他代码。
每次用户滚动页面时都会执行此 HostListener
,我得到 window.pageYOffset
发送到我的 div。
希望对您有所帮助。
我在我的项目中使用 Angular 5.2 并且是 angular 框架的新手。我的组件 html 看起来像这样:-
我想在 angular ts 代码中将 style="top:200px;" 动态添加到上面屏幕截图中带有 class="app-alerts" 的突出显示元素。具有 class "app-alerts" 的 div 元素被添加到渲染上的 DOM。
请建议代码更改。
根据我们的评论,您应该在生命周期挂钩后使用 document.querySelector
ngAfterViewInit() {
(document.querySelector('.app-alerts') as HTMLElement).style.top = '150px';
}
我来晚了,但是不!不要使用 DOCUMENT.QUERYSELECTOR。那不是你设计 Angular DOM 元素的方式!
<div [ngStyle]="{'top.px': divStyle}">
那么在你的组件中,你有
ngAfterViewInit() {
this.divStyle = 200;
}
我发现一个页面有很好的解释和示例代码,可以在 Angular 2+ 中动态添加样式。 Attach the style dynamically in Angular
我有同样的问题,我需要在用户滚动页面时滚动 div,并使用下面的代码解决了我的问题。 在您要捕获滚动的组件处:
import { HostListener } from '@angular/core';
@ViewChild('curtain') divCurtain: ElementRef;
export class ComponentX {
@HostListener('window:scroll', ['$event']) onScrollEvent($event) {
console.log(window.pageYOffset);
this.divCurtain.nativeElement.style.top = window.pageYOffset.toString().concat('px');
}
ngOnInit(): void { }
}
仅此而已,我没有创建任何指令或其他代码。
每次用户滚动页面时都会执行此 HostListener
,我得到 window.pageYOffset
发送到我的 div。
希望对您有所帮助。