Нет поставщика времени выполнения для RuntimeCompiler

Я пытаюсь следовать принятому ответу здесь и сделать вызов RuntimeCompiler.clearCache()

Вот как я пытался это сделать:

import { Component } from '@angular/core';
import { OnInit } from '@angular/core';
import { RuntimeCompiler } from '@angular/compiler';

@Component({
    moduleId: module.id,
    selector: 'my-app',
    templateUrl: 'app.component.html',
})

export class AppComponent implements OnInit {
    constructor(private _runtimeCompiler: RuntimeCompiler) {}

    ngOnInit() {
        this._runtimeCompiler.clearCache();
    }   
}

Но я получаю эту ошибку:

 ORIGINAL EXCEPTION: No provider for RuntimeCompiler!

Чего мне здесь не хватает?

4 ответа

С RC5+ эти провайдеры должны быть зарегистрированы на уровне AppModule

@NgModule({
    imports: [
        BrowserModule
        ...
    ],
    declarations: [ ... ],
    bootstrap:    [ ... ],
    providers: [
        COMPILER_PROVIDERS
    ],
})
export class AppModule { }

Проверьте это Как я могу использовать / создать динамический шаблон для компиляции динамического компонента с Angular 2.0? для рабочего поршня

Удалить строку

import { RuntimeCompiler } from '@angular/compiler';

Затем добавьте компилятор для импорта @angular/core. И заменить RuntimeCompiler на Compiler;

import { Component, Compiler } from '@angular/core';
import { OnInit } from '@angular/core';


@Component({
    moduleId: module.id,
    selector: 'my-app',
    templateUrl: 'app.component.html',
})

export class AppComponent implements OnInit {
    constructor(private _compiler: Compiler) {}

    ngOnInit() {
        this._compiler.clearCache();
    }   
}

https://angular.io/docs/ts/latest/api/core/index/Compiler-class.html

Добавить RuntimeCompiler в качестве поставщика в вашем component,

import { Component } from '@angular/core';
import { OnInit } from '@angular/core';
import { RuntimeCompiler } from '@angular/compiler';

@Component({
   moduleId: module.id,
   selector: 'my-app',
   templateUrl: 'app.component.html',
   providers: [RuntimeCompiler]
})

export class AppComponent implements OnInit {

  constructor(private _runtimeCompiler: RuntimeCompiler) {}

  ngOnInit() {
      this._runtimeCompiler.clearCache();
  }   
}

Добавлять RuntimeCompiler вашим поставщикам компонентов. (providers: [RuntimeCompiler]ниже templateUrl)

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