2016-05-13 7 views
0

@ angularモジュールの名前をangular2に変更したいのは、読みやすく読みやすく、インポートの仕組みを理解したかったからです。Angular2インポートモジュールの名前を変更

だからこれを変更する私の試みの前に、systemjs.config.jsはこのように見えた:

(function(global) 
{ 
    var map = 
    { 
     'app': 'app', // 'dist', 
     '@angular': 'node_modules/@angular', 
     /*...*/ 
    }; 

    var packages = 
    { 
     'app': { main: 'main.js', defaultExtension: 'js' }, 
     '@angular/common': { main: 'index.js', defaultExtension: 'js' }; 
     /*...*/ 
    }; 

    var config = 
    { 
     map: map, 
     packages: packages 
    }; 

    if (global.filterSystemConfig) 
    { 
     global.filterSystemConfig(config); 
    } 

    System.config(config); 
})(this); 

とApp-活字体-ファイル内の輸入は、このように見えた:予想通り、この作品

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

。私はこのようなAngular2モジュールをインポートすることができるように

(function(global) 
{ 
    var map = 
    { 
     'app': 'app', // 'dist', 
     'angular2': 'node_modules/@angular', 
     /*...*/ 
    }; 

    var packages = 
    { 
     'app': { main: 'main.js', defaultExtension: 'js' }, 
     'angular2/common', { main: 'index.js', defaultExtension: 'js' }; 
     /*...*/ 
    }; 

    var config = 
    { 
     map: map, 
     packages: packages 
    }; 

    if (global.filterSystemConfig) 
    { 
     global.filterSystemConfig(config); 
    } 

    System.config(config); 
})(this); 

import { Component } from 'angular2/core'; 

を私はnpm startを実行しようとすると、私は今、次のerrowを得る:

今、私はこれに systemjs.config.jsを変更しました

file-where-i-import.component.ts(1,32):エラーTS2307: 'angular2/core'モジュールが見つかりません。

なぜこのように機能しないのですか?私は何が欠けていますか?

答えて

2

問題は、SystemJSの設定が実行時のみであることです。

TypeScriptのコンパイルは、d.tsのモジュール、タイプ、およびこの構成に依存します。コンパイラは@angularフォルダの中でnode_modulesの下にモジュールを解決しますので、Angular2のモジュール名は@angular/の接頭辞で始まる必要があります。

+0

だからために可能ではありません私はそれをとにかく動作させるために私は? – CharlyDelta

+0

実行時にはうまくいくかもしれないが、コンパイルエラーがあると思う...それは、モジュールの名前変更だけではなく、いくつかの新しいパブリックモジュールが現在rcバージョンに存在するためで、 'angular2/core'、 angular2/common'をベータ版で使用しています。 –

+1

よろしくお願いします。私はそれをそのまま残すと思う。 – CharlyDelta

1

あなたがそれを使用いけない@angularとそんなに問題がある場合は...冗談... あなたは

export * from "@angular/core"; 

とするとき、以下と名前angular2で新しいファイルを作成し、以下の試みること

import { Component } from 'path to angular2 module'; 

ここでは、モジュール名ではなく参照パスを使用する必要があるため、これは正確ではありません。また、使用したい角度からすべてのモジュールを含める必要があります。また、コンポーネントなどのようなエクスポートの名前を使用して、あなたが望むかもしれないものだけをフィルタリングして公開することもできます。また、モジュールを角度付きで追加する機会もあります。

あなたはモジュールの解像度は活字体で仕組みについての詳細をお知りになりたい場合はTypescript Module Resolution

アップデートを見てもよい: あなたは以下のようなフォルダ構造を有していてもよい(Typescript Module Resolutionから抜粋)、

/root/src/angular2/package.json (if it specifies a "typings" property) 
    /root/src/angular2/index.ts 
    /root/src/angular2/index.d.ts 

あなたが使用すること

import { Component } from 'angular2'; 

これが役立つことを願っています!

+0

興味深い試みですが、すべてをインポートするとあまり効果がないため、アプリの速度が遅くなる可能性があります。あなたの助けをありがとう、それはいつもいくつかの選択肢を知って良いです。実際には問題はありません。私はsystemjs.configのいくつかのものを変更していて、名前を変更するだけで動作するかもしれないと考えました。興味のない私は試して失敗し、理由:D – CharlyDelta

+1

遅くなるが、角度のドキュメント[バレル](https://angular.io/docs/ts/latest/glossary。 html#!#B)..バレルとは、複数のモジュールから単一のコンビニエンスモジュールにエクスポートをロールアップする方法です。バレル自体は、他のモジュールの選択されたエクスポートを再エクスポートするモジュールファイルです。乾杯! –

+0

私は見てみましょう:)頭の上にありがとう:) – CharlyDelta

1

あなたは tsconfig.json で、このためpath mappingを指定することができます。

"compilerOptions": { 
    // ...omitted other options... 
    "baseUrl": "", 
    "paths": { 
     "angular2/*": [ 
      "node_modules/@angular/*" 
     ] 
    } 
} 

この機能は、活字体2.0に来ているが、あなたは今日、それを使用することができます。npm install [email protected]

+0

私はちょうどそこにビルドインの方法が、私はちょうど何かが不足している場合は疑問に思っていた。とにかく助けてくれてありがとう: – CharlyDelta

+0

@ChristianDreherあります。これはそれを行うための方法で構築されています。 –

+0

申し訳ありません、使用している現在のバージョンで組み込みの方法を意味しました – CharlyDelta

関連する問題