Я хотел бы обновить свое представление приложения, вызванное событиями из службы.
Один из моих сервисов внедряет 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 {}
ОБНОВЛЕНИЕ
С тех пор я попытался отказаться от использования 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. Как только я добавляю его обратно в один из файлов, браузер жалуется, что не может найти для него провайдера.
Я попытался импортировать его в свой модуль, но это не модуль, поэтому транспилятор жалуется. Я попытался указать его в качестве поставщика в своем модуле, но у него нет свойства предоставления, поэтому транспилятор жалуется. аналогичные проблемы, если я попытаюсь поместить его в массив declarations.