Angular [Violation] Dom Muttation предупреждения в Chrome - PullRequest
0 голосов
/ 22 октября 2019

В нашем проекте Angular 6 в Chrome я неожиданно заметил [Violation] предупреждения в нашем приложении, исходящие из строки zone.js 1666. Сообщение:

[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.

Я никогда не видел их раньше, но опять же они находятся на вкладке инструментов разработчика Chrome, которую я никогда раньше не замечал (console sidebar). Когда я переключился на более старую ветку и обслужил ее локально, эти предупреждения все еще появляются. Так что, возможно, эти предупреждения всегда были там, и я пропустил это все это время, или, возможно, слияние с проектом партнера по команде изменило файл в Angular навсегда, в результате чего дальнейшие сборки всегда вызывают эти предупреждения.

Я проверил строку 1666 zone.js, и в ней используется следующий код:

    var customScheduleGlobal = function () {
        // if there is already a task for the eventName + capture,
        // just return, because we use the shared globalZoneAwareCallback here.
        if (taskData.isExisting) {
            return;
        }
        return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);
    };

Насколько мне известно, мы никогда не изменяли zone.js. Что это за [Violation] предупреждения, как я могу их исправить, последствия их не исправления?

1 Ответ

0 голосов
/ 22 октября 2019

Вы используете MutationObserver где-то в вашем проекте. Вы должны уничтожить его, когда вам больше не нужно.

export class Somedirective implements OnDestroy
    this.changes = new MutationObserver(....)

    ngOnDestroy(){
        this.changes.disconnect();
    }
...