3

angular2 AoT を使用すると、エラーが発生します。

 Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 54:17 in the original .ts file), resolving symbol COMPILER_PROVIDERS in

私の指令モジュールには、次のようなコードがあります。

import { COMPILER_PROVIDERS } from '@angular/compiler';
@NgModule({
/*imports ...*/
providers: [
    COMPILER_PROVIDERS,
]
})

COMPILER_PROVIDERSをエクスポートされた関数に変更する必要があることは理解していますが、@angular/compiler のソース コードを確認すると、次のようになります。

export declare const COMPILER_PROVIDERS: Array<any | Type<any> | {
    [k: string]: any;
} | any[]>;

export declare class RuntimeCompilerFactory implements CompilerFactory {
    private _defaultOptions;
    constructor(defaultOptions: CompilerOptions[]);
    createCompiler(options?: CompilerOptions[]): Compiler;
}

COMPILER_PROVIDERS がどのように機能するのかわかりません。モジュール内のエクスポートされた関数に転送する方法もわかりません。

4

1 に答える 1

9

解決策は、これ以上使用しないCOMPILER_PROVIDERSことです。JitCompilerまた、プロバイダーのリストに含める必要はありません。

代わりに、JitCompilerFactoryfrom "@angular/compiler" を使用してください。注入可能ではないため、次のように自分で新しいインスタンスを作成してください。

private compiler: Compiler = new JitCompilerFactory([{useDebug: false, useJit: true}]).createCompiler();

残りは以前と同じように機能します。たとえば、Radim Kohler の優れた回答hereに従ってください。

于 2017-01-04T09:18:35.587 に答える