3

angular-cliを使用して新しい angular2 アプリケーションを作成しました。今、私はHTTPを使用して API からデータを取得しようとしていました。私が書いたコード:

movie.service.ts

import { Injectable } from '@angular/core';
import { Movie } from './movie';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/Rx';

私のatomエディターは@angular/httpオンラインでエラーを出します。angular2そのため、プロジェクト フォルダーを使用して手動でインストールしnpm install angular2、エラーが生成された行を次のように変更します。

import { Http, Response } from 'angular2/http';

しかし今、私のコンソールは次のように表示されています:

「ネットワーク エラー: 404 が見つかりません - http://localhost:4200/angular2/http/index.js

index.htmlページに次のスクリプトを追加しました。

<script src="https://code.angularjs.org/2.0.0-beta.17/http.dev.js"></script>

そして私のpackage.jsonファイルの依存関係"angular2": "2.0.0-beta.17",。それでも同じエラー。

誰にも手がかりはありますか?私はangular2の初心者です。したがって、どんな助けや提案も大歓迎です。

4

3 に答える 3

2

ベータ版と rc 版が混在していると思います。

ベータ版では、モジュールを名前で事前登録するバンドルされた JS ファイルがいくつかあります。そんな感じ:

<script src="node_modules/angular2/bundles/angular2.min.js"></script>
<script src="node_modules/angular2/bundles/http.min.js"></script>

この場合、SystemJS で Angular2 モジュールのカスタム構成を行う必要はありません。

<script>
  System.config({
    packages: {      
      app: {
        format: 'register',
        defaultExtension: 'js'
      }
    }
  });
</script>

rc バージョンでは、Angular2 はこれを (まだ) 提供していないため、Angular2 モジュール用に明示的に SystemJS を構成する必要があります。

var map = {
  'app':                        'app', // 'dist',
  'rxjs':                       'node_modules/rxjs',
  'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
  '@angular':                   'node_modules/@angular'
};

var packages = {
  'app':                        { main: 'main.js',  defaultExtension: 'js' },
  'rxjs':                       { defaultExtension: 'js' },
  'angular2-in-memory-web-api': { defaultExtension: 'js' },
};

var packageNames = [
  '@angular/common',
  '@angular/compiler',
  '@angular/core',
  '@angular/http',
  '@angular/platform-browser',
  '@angular/platform-browser-dynamic',
  '@angular/router',
  '@angular/router-deprecated',
  '@angular/testing',
  '@angular/upgrade',
];

packageNames.forEach(function(pkgName) {
  packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
});

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

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

System.config(config);
于 2016-05-09T07:46:43.190 に答える
1

beta.17 ではなく RC バージョンの angular2 を使用する必要があります。私の知る限り、インポート@angularは RC バージョンで導入されています。

このバージョンでは、angular2 を複数のパッケージに分割しました。これは、 に複数のパッケージを追加する必要があることを意味しますpackage.json

"@angular/common": "2.0.0-rc.1",
"@angular/compiler": "2.0.0-rc.1",
"@angular/core": "2.0.0-rc.1",
"@angular/platform-browser": "2.0.0-rc.1",
"@angular/platform-browser-dynamic": "2.0.0-rc.1",
"@angular/router": "2.0.0-rc.1",
"@angular/router-deprecated": "2.0.0-rc.1",
"@angular/http": "2.0.0-rc.1"

ノート

私はそれをテストしていませんが、私にはうまくいきます。

于 2016-05-09T07:42:06.280 に答える