7

angular 1 + 2ハイブリッドアプリケーションがあります(したがって、angular 1ベースアプリを使用します)。

アダプターでアプリケーションをブートストラップする前に、アップグレード アダプターを使用して angular2 コンポーネントをダウングレードします。それは期待どおりに機能します。

ただし、多数の angular2 コンポーネント (150 以上) があると予想されるため、ブートストラップの前にすべてのコンポーネントをロードすると、初期ロードが非常に遅くなります。angular2コンポーネントを必要に応じてロードできるように、遅延ロードする方法を見つけようとしています。それを達成する方法はありますか?

これが私のコードの一部です。

main.ts

import baseRouter from './lib/routing/baseRouter';
import router from './lib/routing/router'
import futureRoutes from './futureRoutes'

import { Adapter } from './lib/framework/upgradeAdapter';
import { Http, Headers, Response } from '@angular/http';
import { DashboardComponent } from './2x/Dashboard/dashboard.component';

var app = angular.module('myApp', [
    'ui.router',
    'ngStorage'
]);

app.config(router(app, futureRoutes))
    .config(baseRouter)
    .directive('dashboard', Adapter.downgradeNg2Component(DashboardComponent));

Adapter.bootstrap(document.body, ['myApp'], { strictDi: true });
export default app;

module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { DashboardComponent } from '../../2x/Dashboard/dashboard.component';

@NgModule({
    imports: [BrowserModule],
    declarations: [DashboardComponent]
})
export class AppModule { }

upgradeAdapter.ts

import { UpgradeAdapter } from '@angular/upgrade';
import { AppModule } from './module'

export const Adapter = new UpgradeAdapter(AppModule);

ダッシュボード.コンポーネント.ts

import { Component } from '@angular/core';

@Component({
    selector: 'dashboard',
    templateUrl: '/dist/core/2x/Dashboard/dashboard.html',
})

export class DashboardComponent {
    greeting: string;

    constructor() {
        this.greeting = 'Hello world';
    }
}

これを行うと、ダッシュボード コンポーネントをアプリケーションで使用できるようになります。

4

0 に答える 0