Как исправить ошибку импорта ChangeDetectorRef: Нет провайдера для ChangeDetectorRef - PullRequest
0 голосов
/ 27 ноября 2018

У меня проблема с импортом ChangeDetectorRef в один из моих компонентов.

Для справки, семейное дерево выглядит как PComponent (parent) -> Options-Grid (child) -> FComponent (grandchild).

Это ошибка, которую я получаю в браузере:

StaticInjectorError(AppModule)[FComponent -> ChangeDetectorRef]: 
  StaticInjectorError(Platform: core)[FComponent -> ChangeDetectorRef]: 
    NullInjectorError: No provider for ChangeDetectorRef!

Строка кода, к которой приводит меня ошибка, находится в компоненте Grandparent (PComponent), где она создает первыйдочерний компонент (Options-Grid).

<div>
    <options-grid></options-grid>
</div>

Я правильно предоставляю ChangeDetectorRef в конструкторе и корректно импортирую его в FComponent.Ссылка на ошибку в коде указывает на html PComponent, где я создаю экземпляр компонента Options-Grid.

Это потому, что я не предоставляю ChangeDetectorRef в родительском компоненте?

1 Ответ

0 голосов
/ 27 ноября 2018

Таким образом, причина проблемы, которую я обнаружил, была в том, что я пытался использовать ChangeDetectorRef в компоненте внука, который является нет-нет.

Вместо этого я использовал ChangeDetectorRef в корневом родительском компоненте (PComponent), а также реализовал метод ngAfterContentChecked () для этого компонента.

Вот как это выглядело в PComponent:

import { Component, OnInit, ViewContainerRef, ChangeDetectorRef, AfterContentChecked } from '@angular/core';

export class PComponent implements OnInit, AfterContentChecked {

    constructor(private cdr: ChangeDetectorRef){}

    ngAfterContentChecked() {
        this.cdr.detectChanges();
    }

    ngOnInit() {
        ....
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...