2016-10-26 8 views
2

SystemJSとWebpackプロジェクトのビルドがAngular2 @Component templateUrlsの場合は、文字列が異なる必要があります。 WebPACKのためにSystemJSとWebpack用のangle2コンポーネントtemplateUrlのシングルURLの書き方は?

@Component({ 
    selector: 'home' 
    templateUrl: './app/home/home.component.html' 
}) 
export class HomeComponent implements OnInit, OnDestroy { 
    ... 
} 

:SystemJSについては

@Component({ 
    selector: 'home' 
    templateUrl: './home.component.html' 
}) 
export class HomeComponent implements OnInit, OnDestroy { 
    ... 
} 

SystemJSビルドtemplateUrl文字列の場合はルートからのフルパスでなければなりません。 Webpackの場合templateUrlは、ルートからの完全なパスでなければなりません(コンポーネントとコンポーネントの説明用のhtmlテンプレート*.tsファイルは1つの場所にあります)。 SystemJSWebpackの単一のtemplateUrl文字列を書くことは可能ですか?より迅速なスイッチのためには、SystemJS/Webpack。それは(AMDパターンのために)働くSystemJSについて

export var systemjs: boolean = true; 
export var loginComponentTemplateUrl: string = (systemjs) ? './login.component.html' : './app/login/login.component.html'; 
export default systemjs; 

が、Webpackないために:

import { loginComponentTemplateUrl } from '../shared/url-routing-provider'; 

@Component({ 
    templateUrl: loginComponentTemplateUrl 
}) 

url-routing-provider.ts:私はtemplateUrlのための文字列変数を使用するようにしてください。私のpreviosはこのために関連しています:How declare and import variable into component on angular 2 webpack?

答えて

0

systemJsモジュールローダーで相対パスを使用するには、set the moduleIdを使用できます。ただし、数値モジュール識別子を使用するwebpackに切り替えると、このトリックは機能しません。

のために機能するソリューションの両方のWebPACKとsystem.jsは:

@Component({ 
    moduleId: typeof module.id == "string" ? module.id : null, 
    selector: 'home' 
    templateUrl: './home.component.html' 
}) 
export class HomeComponent implements OnInit, OnDestroy { 
    ... 
} 

それは動作しますが、私はそれはかなりある言うことができません。

関連する問題