TypeScript - JitCompilerFactory אנגולר 5


איך להשתמש ב-JitCompilerFactory באנגלר 5?

ב-angular 4 ייצא '@angular/compiler' את JitCompilerFactory

אבל בקובץ של Angular 5 הוא הועבר ל"@angular/platform-browser-dynamic/src/compiler_factory"

זה הקוד שלי ב-Angular 4

import {CommonModule} from '@angular/common'
import {Compiler, NgModule} from '@angular/core'
import {JitCompilerFactory} from '@angular/compiler'
import {DynamicComponent} from './dynamic.component'
import {DynamicComponentModule} from './dynamic.module'

export function compilerFactory() {
    return new JitCompilerFactory([{useDebug: false, useJit: true}]).createCompiler()
}

@NgModule({
    imports: [
        CommonModule,
    ],
    declarations: [
        DynamicComponent
    ],
    exports: [
        DynamicComponent
    ],
    providers: [
        DynamicComponentModule,
        {provide: Compiler, useFactory: compilerFactory}
    ],
})
export class DynamicModule {
}

איך לגרום לזה לעבוד ב-Angular 5?

תשובה #1

אתה חייב לעדכן את @angular/platform-browser-dynamic לגרסה הכי עדכנית (5.1.0-beta.2) ולקבל את הפקטורי מ:

@angular/platform-browser-dynamic

הבאטה השלישית מביאה 10 תיקוני באגים ותכונה אחת, כלומר: platform-browser-dynamic: יצוא JitCompilerFactory (#20478) (d7a727c), סוגר #20125

  • בקשת תכונה בגיטהאב: https://github.com/angular/angular/issues/20125
  • דיון בגיטהאב: https://github.com/angular/angular/issues/20154
  • למדו עוד על השחרור: https://jaxenter.com/road-to-angular-5-133253.html

אז, אתה לא צריך ליצור את הקומפיילר בעצמך, אתה צריך לתת למזרק לעשות את העבודה כאן :

import {Compiler, COMPILER_OPTIONS, CompilerFactory, NgModule} from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {JitCompilerFactory} from '@angular/platform-browser-dynamic';

import { AppComponent } from './app.component';

export function createCompiler(compilerFactory: CompilerFactory) {
  return compilerFactory.createCompiler();
}

@NgModule({
  imports: [BrowserModule],
  bootstrap: [AppComponent],
  declarations: [AppComponent],
  providers: [
    {provide: COMPILER_OPTIONS, useValue: {}, multi: true},
     {provide: CompilerFactory, useClass: JitCompilerFactory, deps: [COMPILER_OPTIONS]},
     {provide: Compiler, useFactory: createCompiler, deps: [CompilerFactory]}
   ]
})
export class AppModule {}

מצטערים להודיע לך זאת, אך כנראה זה עדיין לא יעבוד משום שהעבודה עדיין בתהליך :

הקרדיט הולך לאנשים האלה: https://github.com/angular/angular/issues/20639#issuecomment-347149868

זה הרג לי את סוף השבוע אז אני מקווה שזה עוזר :) לחיים !