No runtime provider for RuntimeCompiler

2019-05-04 07:49发布

I'm trying to follow the accepted answer here, and make a call to RuntimeCompiler.clearCache()

Here's how I've tried to do it:

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();
    }   
}

But I'm getting this error:

 ORIGINAL EXCEPTION: No provider for RuntimeCompiler!

What am I missing to here?

4条回答
ら.Afraid
2楼-- · 2019-05-04 07:49

Add RuntimeCompiler as provider in your 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();
  }   
}
查看更多
【Aperson】
3楼-- · 2019-05-04 07:50

With RC5+ this providers should be registered on a AppModule level

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

Check this How can I use/create dynamic template to compile dynamic Component with Angular 2.0? for a working plunker

查看更多
狗以群分
4楼-- · 2019-05-04 07:52

Add RuntimeCompiler to your component providers. (providers: [RuntimeCompiler], below templateUrl)

查看更多
Juvenile、少年°
5楼-- · 2019-05-04 08:09

Remove the line

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

Then add Compiler to import @angular/core. And replace RuntimeCompiler to 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

查看更多
登录 后发表回答