2016-09-29 50 views
2

我們有一種獨特的情況,我們使用打字稿,混合ng1和2,但不使用任何模塊加載器。我能夠引導ng 1和ng2,但我不能從降級的角度2組件得到任何響應,我在代碼中放置了一個斷點,並看到代碼運行,但組件沒有顯示任何內容。降級的Angular2組件未呈現在角度內1

我沒有得到任何錯誤,不在編譯階段,也不在運行時。

下面的代碼:

myapp.js - 角1個應用定義,ES2015

(function() { 
    'use strict'; 
    angular.module('myApp', []); 
})(); 

myapp.ng2.ts - 角2的應用程序的定義,打字稿

namespace MyApp { 

let NgModule = ng.core.NgModule; 
let BrowserModule = ng.platformBrowser.BrowserModule; 
let UpgradeAdapter = ng.upgrade.UpgradeAdapter; 

@NgModule({ 
    imports: [BrowserModule] 
}) 

export class MyAppNg2 {} 

export const upgradeAdapter = new UpgradeAdapter(MyAppNg2); 

$(document).ready(function() { 
    upgradeAdapter.bootstrap(document.body, ['MyApp'], {strictDi: false}); 
}); 

} 

fullDetails.component.ts - 角度2 ,打字稿

namespace MyApp.Components.Misc { 

    let Component = ng.core.Component; 

    @Component({ 
     selector: 'full-details-header', 
     template: `This is ng2 component` 
    }) 

    export class FullDetailsHeaderComponent { 
    } 

} 

bootstrap.js - angular1,ES2015

angular.module('myApp').component('fullDetailsHeader', MyApp.upgradeAdapter.downgradeNg2Component(MyApp.Components.Misc.FullDetailsHeaderComponent)); 
+0

你有沒有發現任何解決方案? –

回答

0

這一點很難說,因爲我覺得這是對的角的測試版,這是我沒有做過的與升級的過程,但對於角版本2+您還需要聲明你的組件所需的entryComponents陣列的主要模塊的降級:

@NgModule({ 
    imports: [BrowserModule], 
    entryComponents: [FullDetailsHeaderComponent] 
}) 

假設這是用於Angular beta的,並且你沒有太多工作,我會廢棄這個並使用最新版本的Angular,並按照official guide。在Angular的測試版和發行版之間創建ng1/ng2混合應用程序的示例中,我看到的示例有很大不同,我不認爲它值得解決與測試版升級過程相關的問題。

這仍然是一個相當困難的領域來搜索問題和例子,所以如果你有與Angular版本的升級過程有關的問題2+提出一個新的問題,並ping我。

爲了讓你開始,這裏是一個plunkr,它顯示了一個降級Angular組件並在AngularJS中使用它的工作示例。這也在降級過程中使用了多個包含在4.0.0+版本中的包含。