Angular2没有CompileMetadataResolver的提供程序

时间:2016-09-23 06:38:20

标签: angular angular2-directives angular2-compiler

所以我从RC1升级到Angular2的最终版本。我做了很多调整,但每当我在RuntimeCompiler上注入AppComponent时,就会发生此错误。

No provider for CompileMetadataResolver

我不知道这里发生了什么,也没有看到关于这个问题的网络答案。任何帮助将不胜感激,无论如何这里是我的AppComponent供参考。

import { Component } from '@angular/core';
import { Location } from '@angular/common';
import { Router } from '@angular/router';
import { RuntimeCompiler } from '@angular/compiler';

@Component({
    selector: 'content',
    template: '<router-outlet></router-outlet>'
})
export class AppComponent {
    constructor(
        private location: Location,
        private router: Router,
        private runtimeCompiler: RuntimeCompiler
    ) {;

        if (localStorage.getItem('id_token') == undefined) {
            if (location.path().toLowerCase().startsWith('/login')) {
                // LET IT BE
            } else {
                router.navigate(['login']);
            }

            runtimeCompiler.clearCache();
        } else {
            router.navigate(['menu']);
        }
    }
}

提前谢谢。

1 个答案:

答案 0 :(得分:3)

我想说,你应该将提供者集添加到app模块:

import { COMPILER_PROVIDERS } from "@angular/compiler";
...

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

这组提供商COMPILER_PROVIDERS包含RuntimeCompiler所需的全部内容。使用该段代码How can I use/create dynamic template to compile dynamic Component with Angular 2.0?example工作plunker以及其他一些细节......