angular - 如何在完全呈现 html 之前更改元素的样式?
问题描述
在我的 instagram.component.html 文件中,我将boxPosition
id 分配给我的div
. 然后我在另一个名为 sidenav.component.ts 的组件中使用它。sidenav 组件首先运行,当我单击此组件中的一个图标时,instagram.component 将执行。
问题在这里,首先在执行 instagram 组件之前,我使用boxPosition
元素来更改它的右边距,但boxPosition
它是 null 并且我看到错误。
这是我的 instagram.component.html :
<div class="content-container d-rtl">
<div class="main-rectangular d-rtl" id="boxPosition">
</div>
</div>
这是我的 instagram.component.ts :
export class InstagramComponent implements OnInit {
@Output('boxPosition') public boxPosition: ElementRef;
constructor(public appGlobal: AppGlobals) {
}
ngOnInit() {
}
}
这是我的 sidnavbar.component.html :
<a class="icon-calendar"
(click)="subSideNav('content-production')"
routerLinkActive="active" routerLink="./content/production"
></a>
这是我的 sidnavbar.component.ts :
subSideNav(id) {
const navProperty = document.getElementById('subTitleSideNav');
const navWidth = window.getComputedStyle(navProperty, null).getPropertyValue('width');
const boxProperty = document.getElementById('boxPosition');
if (navWidth === '0px') {
// Open sidenavbar
document.getElementById('subTitleSideNav').style.width = '140px';
this.titleID = id;
console.log(boxProperty);
document.getElementById('boxPosition').style.marginRight = '240px';
}
}
box 属性为空,因此document.getElementById('boxPosition').style.marginRight
不起作用。
我该如何解决这个问题?
解决方案
更新了 instagram.component.ts :
export class InstagramComponent implements OnInit,
AfterViewInit{
@Output('boxPosition') public boxPosition: ElementRef;
constructor(public appGlobal: AppGlobals) { }
ngOnInit() { }
ngAfterViewInit(){
document.getElementById('boxPosition').
style.marginRight = '240px';
}
}
更新了 sidnavbar.component.ts :
subSideNav(id) {
const navProperty = document.getElementById('subTitleSideNav');
const navWidth = window.getComputedStyle(navProperty, null).getPropertyValue('width');
//const boxProperty = document.getElementById('boxPosition');
if (navWidth === '0px') {
// Open sidenavbar
document.getElementById('subTitleSideNav').style.width = '140px';
this.titleID = id;
//console.log(boxProperty);
}
}
推荐阅读
- firebase - 如何在 Flutter 中将测试设备添加到 Firebase Cloud Messaging (FCM)
- .htaccess - 如何使用 htaccess 文件将 url 从 https://example.com/12345.html 重定向到 https://example.com/product/12345/
- c++ - 如何正确释放 BitStreamFilter (bsf) 而不会出现双重释放错误?
- c# - 如何使用 selenium/C# 创建两个具有不同 url 的不同窗口
- testing - 集成测试应该是独立的吗?
- c++ - 我无法理解 C++ 中 setw(n) 函数的用途
- javascript - 以索引为键初始化对象数组
- reactjs - 如何只访问一次 React Redux 值?
- sql - 将 JSON 数组数据添加到临时表或真实表中
- javascript - 使用多个 CSS 网格 - 使用两个网格但希望它们都从页面顶部开始