4

我正在尝试遵循此处接受的答案,并致电 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

4 回答 4

2

删除线

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

于 2017-01-16T14:47:21.467 回答
2

使用 RC5+,此提供程序应在 AppModule 级别注册

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

检查这个如何使用/创建动态模板来使用 Angular 2.0 编译动态组件?对于一个工作的笨蛋

于 2016-09-02T10:22:46.660 回答
1

添加RuntimeCompiler到您的组件提供程序。( providers: [RuntimeCompiler], 下面templateUrl)

于 2016-09-02T10:16:20.043 回答
1

在您的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();
  }   
}
于 2016-09-02T10:16:41.027 回答