2017-02-22 11 views
1

angular-in-memory-web-apiモジュールを使用してサーバーレスポンスを模擬しています。ここで私はメモリ内ウェブアプリケーションの複数のコレクションでエラー404が発生しました

import { Injectable } from '@angular/core'; 
import { Headers, Http } from '@angular/http'; 
import 'rxjs/add/operator/toPromise'; 

import {ConfigItem} from './objects/config-item'; 

@Injectable() 
export class ConfigService { 

    private configUrl ='api/deviceConfig'; 
    private fieldbusConfigUrl ='api/fieldbusConfig'; 


    private headers = new Headers({'Content-Type': 'application/json'}); 

    constructor(private http: Http) { } 


    getDeviceConfig(): Promise<ConfigItem[]> { 
     var test; 
     console.log(this.configUrl); 
     test = this.http.get(this.configUrl) 
       .toPromise() 
       .then(response => response.json().data as ConfigItem[]) 
       .catch(this.handleError); 
     console.log(test); 
     return test; 
    } 

    getFieldbusConfig(): Promise<ConfigItem[]> { 
     var test; 
     console.log(this.fieldbusConfigUrl); 
     test = this.http.get(this.fieldbusConfigUrl) 
       .toPromise() 
       .then(response => response.json().data as ConfigItem[]) 
       .catch(this.handleError); 
     console.log(test); 
     return test; 
    } 


    // Handle Errors 
    private handleError(error: any): Promise<any> { 
     let errMsg = (error.message) ? error.message : 
      error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
      console.error(errMsg); 
    return Promise.reject(errMsg); 
    } 
} 

次のコードでURLをunsingコレクションにアクセスインメモリ・data.service.ts私config.service.tsで

import { Injectable } from '@angular/core'; 
import { InMemoryDbService } from 'angular-in-memory-web-api'; 

@Injectable() 
export class InMemoryData implements InMemoryDbService { 
    createDb() { 

    let deviceConfig = [ 
      { 
       "itemName": "Device Type", 
       "itemValue": "EtnerNet/IP (Script)", 
       "editable": false 
       }, 
       { 
       "itemName": "Software version", 
       "itemValue": "V 4.0", 
       "editable": false 
       }, 
       { 
       "itemName": "Script revision", 
       "itemValue": "37", 
       "editable": false 
       }, 
       { 
       "itemName": "Serial Number", 
       "itemValue": "12341234", 
       "editable": true 
       }, 
       { 
       "itemName": "Script memory", 
       "itemValue": "16320", 
       "editable": true 
       }, 
       { 
       "itemName": "Data memory", 
       "itemValue": "8192", 
       "editable": true 
       } 
    ]; 
    let fieldbusConfig: [ 
       { 
        "itemName": "IP Adress Unitgate", 
        "itemValue": "0.0.0.0", 
        "editable": true 
       }, 
        { 
        "itemName": "Subnet Mask", 
        "itemValue": "0.0.0.0", 
        "editable": true 
       }, 
       { 
        "itemName": "IP Adress Gateway", 
        "itemValue": "0.0.0.0", 
        "editable": true 
       }, 
       { 
        "itemName": "DHCP", 
        "itemValue": "enabled", 
        "editable": true 
       } 
    ]; 

    let applicationProtocol: [ 
     {id: 0, value: "transparent"}, 
     {id: 1, value: "Universal 232"}, 
     {id: 2, value: "Modbus RTU Master"}, 
     {id: 3, value: "Modbus RTU Slave"}, 
     {id: 4, value: "Modus ASCII Master"}, 
     {id: 5, value: "Modbus ASCII Slave"}, 
     {id: 6, value: "3964(R)"}, 
     {id: 7, value: "CS(Pseudo)"}, 
     {id: 8, value: "Universal Modbus RTU Master"}, 
     {id: 9, value: "Universal Modbus RTU Slave"}, 
     {id: 10, value: "Universal ASCII RTU Master"}, 
     {id: 11, value: "Universal ASCII RTU Slave"} 
    ]; 
    return {fieldbusConfig, applicationProtocol, deviceConfig}; 
    } 
} 

それはのために正常に動作しますapi/deviceConfig URL、daが取得され、期待どおりに表示されます。 2番目のURLのapi/fieldbusConfigには404エラーが表示されます。他のサービスで

が、私はこれは同様に404エラーで失敗している、applicationProtocolコレクションを受け取るしよう

import { Injectable } from '@angular/core'; 
import { Headers, Http } from '@angular/http'; 
import 'rxjs/add/operator/toPromise'; 

import {ProtocolItem} from './../objects/protocol-item'; 

@Injectable() 
export class ApplicationDataService { 
    private applicationConfigUrl ='api/applicationConfig'; 
    private applicationProtocolUrl ='api/applicationProtocol'; 

    private headers = new Headers({'Content-Type': 'application/json'}); 

    constructor(private http: Http){}; 

    getProtocols(): Promise<ProtocolItem[]> { 
     var test; 

     test = this.http.get(this.applicationProtocolUrl) 
       .toPromise() 
       .then(response => response.json().data as ProtocolItem[]) 
       .catch(this.handleError); 
     console.log(test); 
     return test; 
    } 

    private handleError(error: any): Promise<any> { 
     console.error('An error occurred', error); // for demo purposes only 
     return Promise.reject(error.message || error); 
     } 
} 

アプリケーションdata.service.tsと呼ばれます。

私は解決策のためにstackoverflowを通して検索し、大丈夫と思われます。私の間違いは何ですか?

答えて

0

2番目と3番目のリストの構文が間違っています。 ":"の代わりに "="を使用する必要があります。

let deviceConfig = [ 
     { 
      "itemName": "Device Type", 
      "itemValue": "EtnerNet/IP (Script)", 
      "editable": false 
      }, 
      { 
      "itemName": "Software version", 
      "itemValue": "V 4.0", 
      "editable": false 
      }, 
      { 
      "itemName": "Script revision", 
      "itemValue": "37", 
      "editable": false 
      }, 
      { 
      "itemName": "Serial Number", 
      "itemValue": "12341234", 
      "editable": true 
      }, 
      { 
      "itemName": "Script memory", 
      "itemValue": "16320", 
      "editable": true 
      }, 
      { 
      "itemName": "Data memory", 
      "itemValue": "8192", 
      "editable": true 
      } 
]; 
let fieldbusConfig = [ 
      { 
       "itemName": "IP Adress Unitgate", 
       "itemValue": "0.0.0.0", 
       "editable": true 
      }, 
       { 
       "itemName": "Subnet Mask", 
       "itemValue": "0.0.0.0", 
       "editable": true 
      }, 
      { 
       "itemName": "IP Adress Gateway", 
       "itemValue": "0.0.0.0", 
       "editable": true 
      }, 
      { 
       "itemName": "DHCP", 
       "itemValue": "enabled", 
       "editable": true 
      } 
]; 

let applicationProtocol = [ 
    {id: 0, value: "transparent"}, 
    {id: 1, value: "Universal 232"}, 
    {id: 2, value: "Modbus RTU Master"}, 
    {id: 3, value: "Modbus RTU Slave"}, 
    {id: 4, value: "Modus ASCII Master"}, 
    {id: 5, value: "Modbus ASCII Slave"}, 
    {id: 6, value: "3964(R)"}, 
    {id: 7, value: "CS(Pseudo)"}, 
    {id: 8, value: "Universal Modbus RTU Master"}, 
    {id: 9, value: "Universal Modbus RTU Slave"}, 
    {id: 10, value: "Universal ASCII RTU Master"}, 
    {id: 11, value: "Universal ASCII RTU Slave"} 
]; 
return {fieldbusConfig, applicationProtocol, deviceConfig}; 
} 
} 

これを試してください。

関連する問題