2

我正在使用角度材料步进器,功能按预期工作并出现以下错误:

在此处输入图像描述

现场演示:

4

2 回答 2

0

通常避免这种ExpressionChangedAfterItHasBeenCheckedError情况的另一种方法是ChangeDetectionStrategy.OnPush在您的组件中使用:

@Component({
    selector: 'my-component',
    templateUrl: '/path/to/my-component.html',
    changeDetection: ChangeDetectionStrategy.OnPush,
})
export class MyComponent {}

使用 Push ChangeDetectionStrategy 的组件仅在显示的数据发生更改时才重新渲染 DOM,而不是在每个 Angular 更改检测周期重新渲染。因此,这节省了客户端的大量资源。

您可能要考虑通过对象引用传递的“缺点”@Input()不会触发此组件的更改检测,因此最终需要使用 手动触发它ChangeDetectorRef,但最终这种方法将导致更清晰的组件属性/数据流管理。

于 2020-04-19T10:15:09.850 回答
0

当您在 ngAfterInit 方法的开头更改值时,有时需要延迟。

    setTimeout(() => {
          //Code Here
      x=Object //new value
        }, 0);
    setTimeout(() => {
          //Code Here
        });

这对我有用

于 2020-04-13T17:32:22.923 回答