InMemoryWebApi: Angular 2 RC6 + Webpack. Не удается разрешить все параметры для InMemoryBackEndService

Я не могу понять, почему я не могу получить макет данных в inMemoryWebApi. Я сделал все настройки хорошо, через angular.io, но я все еще получаю ту же ошибку. Даже когда я удаляю URL и оставляю пустое место, ошибка та же.

Ошибка:

Error: Can't resolve all parameters for InMemoryBackendService: (?, ?).

Я использую веб-пакет, возможно, это причина. Должен ли я объявить где-нибудь в Webpack, конфигурации для inMemoryWebApi? Или, может быть, в helpers.js?

Я добавил его в vendor.ts, который занял webpack.common.js

Vendor.ts:

// 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:

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.common:

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 }
  }
}

Обслуживание:

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 );
    }

}

В прошлый раз я использовал systemJS, где был настроен in-memory-web-api. Пожалуйста, для подсказки, как исправить эту ошибку, и двигаться вперед с ней.

Спасибо и всего наилучшего Bosper

1 ответ

Та же ошибка и никакого решения при попытке реализовать in-memory-web-api с Angular2 Webpack Starter!

Другие вопросы по тегам