Я хотел бы обдумать вид моего приложения, вызванный событиями из службы.
Одна из моих служб внедряет ChangeDetectorRef. Компиляция работает, но я получаю сообщение об ошибке в браузере, когда приложение загружается: No provider for ChangeDetectorRef!
.
Я думал, что мне нужно добавить его в свой AppModule, но я не могу найти документацию, которая предполагает, что она находится в модуле, который я могу импортировать там. Я попытался добавить сам класс в массив импорта, но это вызвало ошибку. Я также получил ошибку, пытаясь добавить ее в массив поставщиков в модуле. Вот упрощенная версия моего сервиса:
import {Injectable, ChangeDetectorRef } from '@angular/core';
@Injectable()
export class MyService {
private count: number = 0;
constructor(private ref: ChangeDetectorRef){}
increment() {
this.count++;
this.ref.detectChanges();
}
И модуль приложения:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { MyService } from './my.service';
@NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent ],
providers: [ MyService ],
booststrap: [ AppComponent ]
})
export AppModule {}
UPDATE
С тех пор я попытался удалить мое использование ChangeDetectorRef, и у меня все еще есть та же проблема. Я предполагаю, что что-то не так, как я обновил конфигурацию System JS.
Я изначально создал приложение с angular -cli и пытался обновить Angular самостоятельно, так как они не обновили это. С окончательной версией Angular 2.0.0 они обновили angular -cli, чтобы использовать последнюю версию angular. Поэтому я попытаюсь использовать процедуры обновления и надеюсь, что это будет лучше.
Обновление 2
Обновление webpack/ angular -cli прошло хорошо. Теперь у меня есть приложение с Angular 2.0.0 и angular -cli 1.0.0-beta14. Я все равно получаю ту же ошибку в браузере. Я попытался удалить ChangeDetectorRef из службы, но на самом деле я этого не сделал. У меня было это в двух сервисах. Если я удалю его из обеих служб, мое приложение загрузится нормально и работает хорошо, за исключением тех случаев, когда я пытался использовать ChangeDetectorRef. Как только я добавлю его обратно в один из файлов, браузер жалуется, что не смог найти поставщика для него.
Я попробовал импортировать его в свой модуль, но это не модуль, поэтому транспилер жалуется. Я попробовал перечислить его провайдером в моем модуле, но у него нет свойства обеспечения, поэтому ретранслятор жалуется. аналогичные проблемы, если я попытаюсь поместить его в массив объявлений.