0

我试图实现 ngOnChanges() 来捕获以前的和当前的值。我实现的功能运行良好。我可以在控制台中看到以前和当前的值,但即使我的代码编译成功,我也会收到此错误。对于“propertyName”、“change”、“current”和“previous”,我遇到了同样的错误。如果我使用“const”而不是“let”,那么我的函数将不起作用。请帮忙!!

在此处输入图像描述

代码:

import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';

@Component({
selector: 'app-simple',
templateUrl: './simple.component.html'
})
export class SimpleComponent implements OnChanges {
  @Input() simpleInput: string;

  ngOnChanges(changes: SimpleChanges) {
    for (let propertyName in changes) {
    let change = changes[propertyName];
    let current = JSON.stringify(change.currentValue);
    let previous = JSON.stringify(change.previousValue);
    console.log(propertyName + ' : currentvalue ' + current + ', previousvalue ' + previous);
    }
  }
}
4

2 回答 2

1

还有另一种迭代数组的方法。在高级 for 循环中使用of 。尝试使用for (let propertyName of changes){} 这可能会对您有所帮助。

Edit1:如果从不重新分配变量,则使用 const 声明会更好。 https://eslint.org/docs/rules/prefer-const 试试这样:

ngOnChanges(changes: SimpleChanges) {
for (const propertyName in changes) {
  if (changes[propertyName]) {
    const change = changes[propertyName];
    const current = JSON.stringify(change.currentValue);
    const previous = JSON.stringify(change.previousValue);
    console.log(propertyName + ' : currentvalue ' + current + ', previousvalue ' + previous);
  }

} }

于 2017-11-14T04:12:36.297 回答
1

这是一个 ESlint 错误:https ://eslint.org/docs/rules/prefer-const

您的代码可以正常工作,因为它以编程方式没有任何问题,正如我提供的链接中所述,它不利于可读性。如果您不想看到错误,可以在 tslint.json 文件中禁用它。您可以手动执行此操作,也可以使用错误对话框中的第三个选项,即“prefer-const从 tslint.json 中删除规则”。

于 2017-11-14T04:20:13.237 回答