angular通过ng-style设置动态宽度,页面展示的时候开始不更新,过了一会直接变为最后的值
时间: 2024-03-27 18:39:30 浏览: 106
ng-book2-angular-6-r68
5星 · 资源好评率100%
这种情况可能是由于Angular的变更检测机制导致的。在Angular中,当组件的输入属性或视图绑定发生变化时,Angular会自动检测这些变化并更新视图。但是,当你使用像ngStyle这样的指令时,Angular可能无法检测到对应的属性变化,从而导致视图没有及时更新。
解决这个问题的方法是手动触发变更检测。你可以注入ChangeDetectorRef服务,并在相应的代码中调用它的detectChanges方法。这样做可以强制Angular检测到组件或指令的变化并更新视图。
以下是一个示例代码:
```typescript
import { Component, ChangeDetectorRef } from '@angular/core';
@Component({
selector: 'my-component',
template: `
<div [ngStyle]="{'width': width + 'px'}"></div>
`
})
export class MyComponent {
public width: number = 100;
constructor(private cdr: ChangeDetectorRef) {}
public updateWidth() {
this.width = 200;
this.cdr.detectChanges(); // 手动触发变更检测
}
}
```
在上面的代码中,我们注入了ChangeDetectorRef服务,并在updateWidth方法中调用了它的detectChanges方法。这样做可以确保视图及时更新,而不是等到下一次自动变更检测时才更新。
阅读全文