Реализация ngOnChange для захвата старого и текущего значения в Angular2

Я пытался реализовать 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);
    }
  }
}

2 ответа

Решение

Это ошибка ESlint: https://eslint.org/docs/rules/prefer-const

Ваш код будет работать нормально, потому что программно в этом нет ничего плохого, просто он не очень удобен для читабельности, как указано в приведенной мной ссылке. Если вы не хотите видеть ошибку, вы можете отключить ее в файле tslint.json. Вы можете сделать это вручную ИЛИ использовать третью опцию в диалоге ошибок, т.е. "Удалить правило". prefer-const от tslint.json'.

Есть еще один способ перебора массива. Использование в продвинутом цикле. Попробуйте использовать 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);
  }

}}

Другие вопросы по тегам