2016-09-02 2 views
4

Я пытаюсь следовать принятый ответ здесь, и сделать вызов RuntimeCompiler.clearCache()Нет поставщика для выполнения RuntimeCompiler

Вот никогда, как я пытался сделать это:

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! 

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

ответ

1

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

+0

Спасибо за ответ. Когда я добавляю 'провайдеров', я теперь получаю:' Нет провайдера для CompileMetadataResolver! '. – Juicy

1

Добавить 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(); 
    } 
} 
+0

Спасибо за ответ. Когда я добавляю 'провайдеров', я теперь получаю:' Нет провайдера для CompileMetadataResolver! '. – Juicy

+0

@Juicy, какую версию ng вы используете? согласно официальному api, существует такой же простой класс 'Compiler' без' Runtime', check (эта ссылка) [https://angular.io/docs/js/latest/api/core/index/Compiler-class.html ] – Mikki

+0

Спасибо, что указали это. Я искал ее. У него есть метод clearCache, но я не уверен, как его использовать ... 'import {Compiler} из '@ angular/compiler' говорит мне, что нет экспортированного элемента, называемого' Compiler'. Я использую последний '@ angular' из' npm', который я считаю «RC5». – Juicy

2

Удалить линию

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

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

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

Смежные вопросы