2016-10-07 2 views
1

Vielen Dank im Voraus für jede Hilfe. Ich versuche, lokalen Speicherzugriff in Angular 2 mit Typoskript zu erhalten. Ich verwende das npm-Paket angular2-localstorage. Ich hatte die angular.io "Tour of Heroes" im Einsatz (ohne viel Styling). Ich folgte den Anweisungen unter https://www.npmjs.com/package/angular2-localstorage. Nach dem Hinzufügen des vorgeschlagenen Code meiner app.module.ts Datei, versuchte mit ich mit npm start und erhalten Sie die folgenden Kompilierungsfehler:Angular 2 lokale Speicher - „haben kein exportierte Mitglied“ Kompilierungsfehlern

node_modules/angular2-localstorage/LocalStorageEmitter.ts(46,9): error TS2305: Module '"/Users/joshuaforman/Documents/CodeCraft/a2quickstart/a2-angular/node_modules/@angular/core/src/facade/lang"' has no exported member 'Type'. 
node_modules/angular2-localstorage/LocalStorageEmitter.ts(47,9): error TS2305: Module '"/Users/joshuaforman/Documents/CodeCraft/a2quickstart/a2-angular/node_modules/@angular/core/src/di"' has no exported member 'provide'. 

Sie die gesamten Code hier sehen können: https://github.com/joshuaforman/angular2-quickstart

Zusätzlich hier ist die vollständige app.module.ts-Datei (die einzige, die ich geändert haben, dass die Fehler auftreten verursacht):

import { NgModule }  from "@angular/core"; 
import { BrowserModule } from "@angular/platform-browser"; 
import { FormsModule } from "@angular/forms"; 
import { HttpModule } from "@angular/http"; 

// added for LocalStorage 
// followed instructions here: https://www.npmjs.com/package/angular2-localstorage 
import { LocalStorageService, LocalStorageSubscriber } from "angular2-localstorage/LocalStorageEmitter"; 

// Imports for loading & configuring the in-memory web api 
import { InMemoryWebApiModule } from "angular2-in-memory-web-api"; 
import { InMemoryDataService } from "./in-memory-data.service"; 

import { AppComponent }  from "./app.component"; 
import { HeroDetailComponent } from "./hero-detail.component"; 
import { HeroesComponent }  from "./heroes.component"; 
import { HeroService }   from "./hero.service"; 
import { DashboardComponent } from "./dashboard.component"; 

import { routing } from "./app.routing"; 

@NgModule({ 
    imports: [ 
    BrowserModule, 
    HttpModule, 
    InMemoryWebApiModule.forRoot(InMemoryDataService), 
    FormsModule, 
    routing 
    ], 
    declarations: [ 
     AppComponent, 
     HeroesComponent, 
     HeroDetailComponent, 
     DashboardComponent 
    ], 
    bootstrap: [ AppComponent ], 
    providers: [ 
     HeroService, 
     LocalStorageService // added for Local Storage 
    ] 
}) 
export class AppModule { 
    // added for Local Storage 
    constructor(storageService: LocalStorageService) {} 
} 

ich habe einen Kommentar mit jeder Zeile, die ich lokalen Speicher zu implementieren hinzugefügt, die enthält Text "LocalStorage". Wenn Sie diese drei Zeilen auskommentieren, funktioniert Kompilation und Laufzeit gut.

An dieser Stelle möchte ich nur in der Lage sein, erfolgreich zu kompilieren. Vielen Dank.

Hinweis: Dies ist meine erste Frage auf Stapel. Ich habe in der Vergangenheit viele Antworten hier gefunden, und ich habe mein Bestes getan, Konventionen zu befolgen, diese Frage zu stellen. Jede produktive Rückmeldung, was ich anders machen sollte, ist willkommen.

+1

Last Ich wusste angular2-local mit den letzten Versionen von Angular nicht kompatibel war. Der GitHub listet sogar auf, dass er nicht mehr gepflegt wird. Ich würde empfehlen, Bibliotheken zu wechseln, wenn Sie den lokalen/Sitzungsspeicher benötigen. Ich fand [Angular2 Cool Storage] (https://github.com/Hacklone/angular2-cool-storage) funktioniert gut –

+0

Nun, das würde es tun, nicht wahr? Ich werde Cool Storage am Wochenende ausprobieren und berichten. Vielen Dank. –

+0

Ich bestätige, dass diese Bibliothek nicht mit den neuesten Versionen von angular2 kompatibel ist. Sie sollten einen der anderen verwenden, die den Webspeicher verwalten. Wie Dave V sagte, können Sie angular2 kühle Lagerung oder [NG2-WebStorage] (https://github.com/PillowPillow/ng2-webstorage) verwenden, die ich vor einigen Monaten erstellt – Polochon

Antwort

5

Angular2-Localstorage wird nicht mehr gepflegt, werden Sie eine andere Bibliothek, bis diese bekommt man einen aktiven Betreuer verwenden. Ich empfehle Angular2 kühle Lagerung

+0

Danke. Dies löst den Kompilierungsfehler. Jetzt bekomme ich jedoch einen Laufzeitfehler. Wenn ich der Readme-Datei folge und diese Zeile zu meiner Datei app.module.ts 'imports: [CoolStorageModule]' hinzufüge, erhalte ich folgende Fehlermeldung: zone.js: 1274 GET http: // localhost: 3000/angular2-cool-storage 404 (nicht gefunden) '. Irgendwelche Hilfe, die Sie auf diesem geben können? –

+0

Eine Sache, die ich bemerke, ist, dass zone.js: 1274 auf meiner Netzwerk-Registerkarte viele gets startet, alle für .js-Dateien. Außer für angular2-cool-storage, die keine Erweiterung .js hat und die einzige Datei ist, die Fehler enthält. Ich habe meinen Code hochgeladen, der versucht, kühlen Speicher zu meinem Git-Repository zu verwenden - https://github.com/joshuaforman/angular2-quickstart –

+0

Ich fand es heraus. Zusätzlich zu den Anweisungen in der Readme-Datei musste ich die Datei system.config.js für die Verwendung von Cool Storage einrichten. Ich denke, das ist, was ein erfahrener Angular 2 Entwickler wissen würde.Insbesondere habe ich diese Zeile in der Karte Eigenschaft: ' "angular2-cool-Lagerung": "npm: angular2-cool-storage"' und diese Zeilen in die Pakete Eigenschaft hinzu: ' "angular2-cool-Speicher": { Haupt : „./cool-storage.js“, Default: ‚js‘ } ' –

0

Ersetzen Sie diese Zeilen aus "LocalStorageEmitter.ts" von node_modeule "angular2-localstorage"

import {Type} from "@angular/core/src/facade/lang"; 
import {provide} from "@angular/core/src/di"; 
import {ComponentRef} from "@angular/core"; 

export function LocalStorageSubscriber(appPromise: Promise<ComponentRef<any>>) { 
    appPromise.then((bla) => { 
     bla.injector.get(<Type>LocalStorageService); 
    }); 
} 

mit diesem.

import {Type} from "@angular/core/src/type"; 
import {Provider} from "@angular/core/src/di"; 
import {ComponentRef} from "@angular/core"; 

export function LocalStorageSubscriber(appPromise: Promise<ComponentRef<any>>) { 
    appPromise.then((bla) => { 
     bla.injector.get(<Type<any>>LocalStorageService); 
    }); 
} 

Es ist Arbeiten für mich ...

Für Details =>https://github.com/marcj/angular2-localstorage/issues/66

Verwandte Themen