なぜ私はinMemoryWebApiで模擬データを取得できないのか分かりません。私はすべての設定をangular.ioでうまく行いましたが、私はまだ同じエラーが発生します。 URLを削除して空き領域を残しても、エラーは同じです。InMemoryWebApi:角度2 RC6 + Webpack。 InMemoryBackEndServiceのすべてのパラメータを解決できません
エラー:
Error: Can't resolve all parameters for InMemoryBackendService: (?, ?).
私はWebPACKのを使用しています、多分これが理由です。 inMemoryWebApiの設定、Webpackのどこかで宣言すべきですか?あるいはhelpers.jsで?
// Angular 2
import '@angular/platform-browser';
import '@angular/platform-browser-dynamic';
import '@angular/core';
import '@angular/common';
import '@angular/http';
import '@angular/router';
import 'angular2-in-memory-web-api';
import 'reflect-metadata';
// RxJS
import 'rxjs';
//Other vendors
import 'bootstrap-css-only';
Helpers.js:
var path = require('path');
var _root = path.resolve(__dirname, '..');
function root(args) {
args = Array.prototype.slice.call(arguments, 0);
return path.join.apply(path, [_root].concat(args));
}
exports.root = root;
AppModule
私はwebpack.common.js
Vendor.tsによって取られた、vendor.tsにそれを追加しました:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpModule, JsonpModule } from '@angular/http';
import { AlertModule, DatepickerModule } from 'ng2-bootstrap/ng2-bootstrap';
// Imports for loading & configuring the in-memory web api
import { InMemoryWebApiModule } from 'angular2-in-memory-web-api';
import { InMemoryData } from './in-memory-data';
import { AppComponent } from './app.component';
import { AppService } from './app.service';
import { routing } from './app.routing';
@NgModule({
imports: [
BrowserModule,
AlertModule,
FormsModule,
HttpModule,
DatepickerModule,
InMemoryWebApiModule.forRoot(InMemoryData)
//routing
],
declarations: [AppComponent],
providers: [
AppService
],
bootstrap: [AppComponent]
})
export class AppModule {
}
webpack.commo N:
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var helpers = require('./helpers');
module.exports = {
entry: {
'polyfills': './src/polyfills.ts',
'vendor': './src/vendor.ts',
'app': './src/main.ts'
},
resolve: {
extensions: ['', '.js', '.ts']
},
module: {
loaders: [
{
test: /\.ts$/,
loaders: ['ts', 'angular2-template-loader']
},
{
test: /\.html$/,
loader: 'html'
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
loader: 'file?name=assets/[name].[hash].[ext]'
},
{
test: /\.css$/,
exclude: helpers.root('src', 'app'),
loader: ExtractTextPlugin.extract('style', 'css?sourceMap')
},
{
test: /\.css$/,
include: helpers.root('src', 'app'),
loader: 'raw'
},
{
test: /\.scss$/,
exclude: helpers.root('src', 'app'),
loaders: ['raw', 'sass']
}
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: ['app', 'vendor', 'polyfills']
}),
new HtmlWebpackPlugin({
template: 'src/index.html'
})
]
};
InMemoryData:
import { InMemoryDbService } from 'angular2-in-memory-web-api';
export class InMemoryData implements InMemoryDbService {
createDb() {
let memcache = {
id: 1,
cif: "11676096",
name: 'Barbara'
};
return { memcache }
}
}
サービス:私は 'インメモリ・ウェブAPI' に設定されたsystemJSを、使用
import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';
import { OfferModel } from './app.offers.model';
import { MemcacheModel } from './app.memcache.model';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class AppService {
private memcacheUrl = "app/memcache";
constructor(public http: Http) {
}
getMemcache(): Promise<MemcacheModel> {
return this.http.get(this.memcacheUrl)
.toPromise()
.then(response => response.json().data as MemcacheModel)
.catch(this.handleError);
}
handleError(error: any) {
console.log('An error has occured: ', error);
return Promise.reject(error.message || error);
}
}
前回。ヒント、このエラーを修正する方法、それを前進してください。
おかげに関して Bosper
'MemcacheModel'クラス(またはインターフェース)は' id'、 'cif'、' name'の3つのフィールドを持っていますか? – mrgoos
ベンダーからimport 'angular2-in-memory-web-api'を削除して解決しました。私は2つの輸入品を持っていた、それは問題でした。 –